1 /*
2 * Copyright (C) Christian Schulte <cs@schulte.it>, 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 5043 2015-05-27 07:03:39Z 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 5043 2015-05-27 07:03:39Z 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 /**
70 * Creates a new {@code TestResourcesWriteMojo} instance.
71 */
72 public TestResourcesWriteMojo()
73 {
74 super();
75 }
76
77 @Override
78 protected String getResourcesModuleName() throws MojoExecutionException
79 {
80 return this.getTestModuleName();
81 }
82
83 @Override
84 protected ClassLoader getResourcesClassLoader() throws MojoExecutionException
85 {
86 return this.getTestClassLoader();
87 }
88
89 @Override
90 protected File getResourcesDirectory() throws MojoExecutionException
91 {
92 return this.testResourcesOutputDirectory;
93 }
94
95 @Override
96 protected String getGoal() throws MojoExecutionException
97 {
98 return "write-test-resources";
99 }
100
101 @Override
102 protected String getExecutionStrategy() throws MojoExecutionException
103 {
104 return this.writeTestResourcesExecutionStrategy;
105 }
106
107 @Override
108 protected File getResourcesOutputDirectory() throws MojoExecutionException
109 {
110 return this.getTestOutputDirectory();
111 }
112
113 @Override
114 protected void addMavenResource( final MavenProject mavenProject, final Resource resource )
115 throws MojoExecutionException
116 {
117 mavenProject.addTestResource( resource );
118 }
119
120 }