1 /*
2 * Copyright (C) Christian Schulte, 2005-206
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * o Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * o Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in
14 * the documentation and/or other materials provided with the
15 * distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
18 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
19 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
20 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 * $JOMC: TestResourcesWriteMojo.java 4613 2012-09-22 10:07:08Z schulte $
29 *
30 */
31 package org.jomc.mojo;
32
33 import java.io.File;
34 import org.apache.maven.model.Resource;
35 import org.apache.maven.plugin.MojoExecutionException;
36 import org.apache.maven.project.MavenProject;
37
38 /**
39 * Writes a projects' test resource files.
40 *
41 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
42 * @version $JOMC: TestResourcesWriteMojo.java 4613 2012-09-22 10:07:08Z schulte $
43 *
44 * @phase process-test-resources
45 * @goal write-test-resources
46 * @threadSafe
47 * @requiresDependencyResolution test
48 */
49 public final class TestResourcesWriteMojo extends AbstractResourcesWriteMojo
50 {
51
52 /**
53 * Execution strategy of the goal ({@code always} or {@code once-per-session}).
54 *
55 * @parameter default-value="once-per-session" expression="${jomc.writeTestResourcesExecutionStrategy}"
56 * @since 1.1
57 */
58 private String writeTestResourcesExecutionStrategy;
59
60 /**
61 * Directory to write test resource files to.
62 *
63 * @parameter default-value="${project.build.directory}/generated-test-resources/jomc"
64 * expression="${jomc.testResourcesOutputDirectory}"
65 * @since 1.2
66 */
67 private File testResourcesOutputDirectory;
68
69 /** Creates a new {@code TestResourcesWriteMojo} instance. */
70 public TestResourcesWriteMojo()
71 {
72 super();
73 }
74
75 @Override
76 protected String getResourcesModuleName() throws MojoExecutionException
77 {
78 return this.getTestModuleName();
79 }
80
81 @Override
82 protected ClassLoader getResourcesClassLoader() throws MojoExecutionException
83 {
84 return this.getTestClassLoader();
85 }
86
87 @Override
88 protected File getResourcesDirectory() throws MojoExecutionException
89 {
90 return this.testResourcesOutputDirectory;
91 }
92
93 @Override
94 protected String getGoal() throws MojoExecutionException
95 {
96 return "write-test-resources";
97 }
98
99 @Override
100 protected String getExecutionStrategy() throws MojoExecutionException
101 {
102 return this.writeTestResourcesExecutionStrategy;
103 }
104
105 @Override
106 protected File getResourcesOutputDirectory() throws MojoExecutionException
107 {
108 return this.getTestOutputDirectory();
109 }
110
111 @Override
112 protected void addMavenResource( final MavenProject mavenProject, final Resource resource )
113 throws MojoExecutionException
114 {
115 mavenProject.addTestResource( resource );
116 }
117
118 }