1 package org.codehaus.plexus.maven.plugin;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23
24 import org.apache.maven.plugin.MojoExecutionException;
25 import org.apache.maven.plugins.annotations.LifecyclePhase;
26 import org.apache.maven.plugins.annotations.Mojo;
27 import org.apache.maven.plugins.annotations.Parameter;
28 import org.apache.maven.plugins.annotations.ResolutionScope;
29 import org.codehaus.plexus.metadata.MetadataGenerationRequest;
30
31
32
33
34
35
36
37
38 @Mojo(
39 name = "generate-test-metadata",
40 defaultPhase = LifecyclePhase.PROCESS_TEST_CLASSES,
41 requiresDependencyResolution = ResolutionScope.TEST)
42 public class PlexusTestDescriptorMojo extends AbstractDescriptorMojo {
43
44
45
46 @Parameter(defaultValue = "${project.build.testOutputDirectory}/META-INF/plexus/components.xml", required = true)
47 protected File testGeneratedMetadata;
48
49
50
51
52
53 @Parameter(defaultValue = "${basedir}/src/test/resources/META-INF/plexus", required = true)
54 protected File testStaticMetadataDirectory;
55
56
57
58
59
60 @Parameter(defaultValue = "${project.build.directory}/test-components.xml", required = true)
61 protected File testIntermediaryMetadata;
62
63 public void execute() throws MojoExecutionException {
64 MetadataGenerationRequest request = new MetadataGenerationRequest();
65
66 try {
67 request.classpath = mavenProject.getTestClasspathElements();
68 request.classesDirectory = new File(mavenProject.getBuild().getTestOutputDirectory());
69 request.sourceDirectories = mavenProject.getTestCompileSourceRoots();
70 request.sourceEncoding = sourceEncoding;
71 request.componentDescriptorDirectory = testStaticMetadataDirectory;
72 request.intermediaryFile = testIntermediaryMetadata;
73 request.outputFile = testGeneratedMetadata;
74 request.extractors = extractors;
75
76 metadataGenerator.generateDescriptor(request);
77 } catch (Exception e) {
78 throw new MojoExecutionException("Error generating test metadata: ", e);
79 }
80 }
81 }