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-metadata",
40 defaultPhase = LifecyclePhase.PROCESS_CLASSES,
41 requiresDependencyResolution = ResolutionScope.COMPILE)
42 public class PlexusDescriptorMojo extends AbstractDescriptorMojo {
43
44
45
46 @Parameter(defaultValue = "${project.build.outputDirectory}/META-INF/plexus/components.xml", required = true)
47 protected File generatedMetadata;
48
49
50
51
52
53 @Parameter(defaultValue = "${basedir}/src/main/resources/META-INF/plexus", required = true)
54 protected File staticMetadataDirectory;
55
56
57
58
59
60 @Parameter(defaultValue = "${project.build.directory}/components.xml", required = true)
61 protected File intermediaryMetadata;
62
63 public void execute() throws MojoExecutionException {
64 MetadataGenerationRequest request = new MetadataGenerationRequest();
65
66 try {
67 request.classpath = mavenProject.getCompileClasspathElements();
68 request.classesDirectory = new File(mavenProject.getBuild().getOutputDirectory());
69 request.sourceDirectories = mavenProject.getCompileSourceRoots();
70 request.sourceEncoding = sourceEncoding;
71 request.componentDescriptorDirectory = staticMetadataDirectory;
72 request.intermediaryFile = intermediaryMetadata;
73 request.outputFile = generatedMetadata;
74 request.extractors = extractors;
75
76 metadataGenerator.generateDescriptor(request);
77 } catch (Exception e) {
78 throw new MojoExecutionException("Error generating metadata: ", e);
79 }
80 }
81 }