1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  package org.apache.maven.plugins.javadoc;
20  
21  import javax.inject.Inject;
22  
23  import java.io.File;
24  import java.util.ArrayList;
25  import java.util.Arrays;
26  import java.util.Collections;
27  import java.util.List;
28  import java.util.Locale;
29  
30  import org.apache.maven.artifact.Artifact;
31  import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
32  import org.apache.maven.doxia.tools.SiteTool;
33  import org.apache.maven.plugins.annotations.LifecyclePhase;
34  import org.apache.maven.plugins.annotations.Mojo;
35  import org.apache.maven.plugins.annotations.Parameter;
36  import org.apache.maven.plugins.annotations.ResolutionScope;
37  import org.apache.maven.plugins.javadoc.resolver.ResourceResolver;
38  import org.apache.maven.plugins.javadoc.resolver.SourceResolverConfig;
39  import org.apache.maven.project.MavenProject;
40  import org.apache.maven.project.MavenProjectHelper;
41  import org.apache.maven.project.ProjectBuilder;
42  import org.apache.maven.toolchain.ToolchainManager;
43  import org.codehaus.plexus.archiver.jar.JarArchiver;
44  import org.codehaus.plexus.archiver.manager.ArchiverManager;
45  import org.codehaus.plexus.util.StringUtils;
46  import org.eclipse.aether.RepositorySystem;
47  import org.eclipse.aether.util.filter.ScopeDependencyFilter;
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  @Mojo(
58          name = "test-jar",
59          defaultPhase = LifecyclePhase.PACKAGE,
60          requiresDependencyResolution = ResolutionScope.TEST,
61          threadSafe = true)
62  public class TestJavadocJarMojo extends JavadocJarMojo {
63  
64      
65      @Inject
66      public TestJavadocJarMojo(
67              MavenProjectHelper projectHelper,
68              JarArchiver jarArchiver,
69              SiteTool siteTool,
70              ArchiverManager archiverManager,
71              ResourceResolver resourceResolver,
72              RepositorySystem repoSystem,
73              ArtifactHandlerManager artifactHandlerManager,
74              ProjectBuilder mavenProjectBuilder,
75              ToolchainManager toolchainManager) {
76          super(
77                  projectHelper,
78                  jarArchiver,
79                  siteTool,
80                  archiverManager,
81                  resourceResolver,
82                  repoSystem,
83                  artifactHandlerManager,
84                  mavenProjectBuilder,
85                  toolchainManager);
86      }
87      
88  
89      
90      
91      
92  
93      
94  
95  
96  
97  
98      @Parameter(
99              property = "testDoctitle",
100             alias = "doctitle",
101             defaultValue = "${project.name} ${project.version} Test API")
102     private String testDoctitle;
103 
104     
105 
106 
107 
108 
109 
110     @Parameter(
111             property = "testOverview",
112             alias = "overview",
113             defaultValue = "${basedir}/src/test/javadoc/overview.html")
114     private File testOverview;
115 
116     
117 
118 
119 
120 
121     @Parameter(
122             property = "testWindowtitle",
123             alias = "windowtitle",
124             defaultValue = "${project.name} ${project.version} Test API")
125     private String testWindowtitle;
126 
127     
128     
129     
130 
131     
132 
133 
134 
135 
136     @Parameter(alias = "javadocDirectory", defaultValue = "${basedir}/src/test/javadoc")
137     private File testJavadocDirectory;
138 
139     
140 
141 
142     @Parameter(property = "maven.javadoc.testClassifier", defaultValue = "test-javadoc", required = true)
143     private String testClassifier;
144 
145     
146     
147     
148 
149     @Override
150     protected String getClassifier() {
151         return testClassifier;
152     }
153 
154     
155     
156     
157 
158     @Override
159     protected File getJavadocDirectory() {
160         return testJavadocDirectory;
161     }
162 
163     @Override
164     protected String getDoctitle() {
165         return testDoctitle;
166     }
167 
168     @Override
169     protected File getOverview() {
170         return testOverview;
171     }
172 
173     @Override
174     protected String getWindowtitle() {
175         return testWindowtitle;
176     }
177 
178     @Override
179     protected List<File> getProjectBuildOutputDirs(MavenProject p) {
180         List<File> dirs = new ArrayList<>();
181         if (StringUtils.isNotEmpty(p.getBuild().getOutputDirectory())) {
182             dirs.add(new File(p.getBuild().getOutputDirectory()));
183         }
184         if (StringUtils.isNotEmpty(p.getBuild().getTestOutputDirectory())) {
185             dirs.add(new File(p.getBuild().getTestOutputDirectory()));
186         }
187 
188         return dirs;
189     }
190 
191     @Override
192     protected List<String> getProjectSourceRoots(MavenProject p) {
193         if ("pom".equals(p.getPackaging().toLowerCase(Locale.ENGLISH))) {
194             return Collections.emptyList();
195         }
196 
197         return p.getTestCompileSourceRoots();
198     }
199 
200     @Override
201     protected List<String> getExecutionProjectSourceRoots(MavenProject p) {
202         if ("pom".equals(p.getExecutionProject().getPackaging().toLowerCase(Locale.ENGLISH))) {
203             return Collections.emptyList();
204         }
205 
206         return p.getExecutionProject().getTestCompileSourceRoots();
207     }
208 
209     @Override
210     protected ScopeDependencyFilter getDependencyScopeFilter() {
211         return new ScopeDependencyFilter(
212                 Arrays.asList(
213                         Artifact.SCOPE_COMPILE, Artifact.SCOPE_PROVIDED, Artifact.SCOPE_SYSTEM, Artifact.SCOPE_TEST),
214                 null);
215     }
216 
217     
218 
219 
220 
221 
222     @Override
223     protected SourceResolverConfig configureDependencySourceResolution(final SourceResolverConfig config) {
224         return super.configureDependencySourceResolution(config)
225                 .withoutCompileSources()
226                 .withTestSources();
227     }
228 
229     @Override
230     protected boolean isTest() {
231         return true;
232     }
233 }