diff --git a/maven-plugin-plugin/src/it/annotation-with-inheritance-reactor/verify.groovy b/maven-plugin-plugin/src/it/annotation-with-inheritance-reactor/verify.groovy index 33505e3..8c7c541 100644 --- a/maven-plugin-plugin/src/it/annotation-with-inheritance-reactor/verify.groovy +++ b/maven-plugin-plugin/src/it/annotation-with-inheritance-reactor/verify.groovy @@ -6,6 +6,8 @@ assert descriptorFile.isFile() def pluginDescriptor = new XmlParser().parse( descriptorFile ); +assert pluginDescriptor.mojos.mojo.size() == 3 + def mojo = pluginDescriptor.mojos.mojo.findAll{ it.goal.text() == "first"}[0] assert mojo.goal.text() == 'first' diff --git a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java index 194cb7d..ea470f9 100644 --- a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java +++ b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java @@ -82,6 +82,8 @@ public class JavaAnnotationsMojoDescriptorExtractor mojoAnnotationsScannerRequest.setDependencies( request.getDependencies() ); + mojoAnnotationsScannerRequest.setProject( request.getProject() ); + Map mojoAnnotatedClasses = mojoAnnotationsScanner.scan( mojoAnnotationsScannerRequest ); diff --git a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/datamodel/AnnotatedContent.java b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/datamodel/AnnotatedContent.java index fb687ca..3869117 100644 --- a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/datamodel/AnnotatedContent.java +++ b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/datamodel/AnnotatedContent.java @@ -18,12 +18,15 @@ package org.apache.maven.tools.plugin.annotations.datamodel; * under the License. */ +import org.apache.maven.artifact.Artifact; + /** * @author Olivier Lamy * @since 3.0 */ public class AnnotatedContent { + private String description; private String since; @@ -59,4 +62,5 @@ public class AnnotatedContent { this.deprecated = deprecated; } + } diff --git a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/DefaultMojoAnnotationsScanner.java b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/DefaultMojoAnnotationsScanner.java index ffc8a2c..80cbf9d 100644 --- a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/DefaultMojoAnnotationsScanner.java +++ b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/DefaultMojoAnnotationsScanner.java @@ -74,11 +74,13 @@ public class DefaultMojoAnnotationsScanner { if ( dependencyFile.isDirectory() ) { - mojoAnnotatedClasses.putAll( scanDirectory( dependencyFile, request.getIncludePatterns() ) ); + mojoAnnotatedClasses.putAll( + scanDirectory( dependencyFile, request.getIncludePatterns(), dependency ) ); } else { - mojoAnnotatedClasses.putAll( scanFile( dependencyFile, request.getIncludePatterns() ) ); + mojoAnnotatedClasses.putAll( + scanFile( dependencyFile, request.getIncludePatterns(), dependency ) ); } } } @@ -87,7 +89,8 @@ public class DefaultMojoAnnotationsScanner { if ( classDirectory.exists() && classDirectory.isDirectory() ) { - mojoAnnotatedClasses.putAll( scanDirectory( classDirectory, request.getIncludePatterns() ) ); + mojoAnnotatedClasses.putAll( scanDirectory( classDirectory, request.getIncludePatterns(), + request.getProject().getArtifact() ) ); } } @@ -99,7 +102,8 @@ public class DefaultMojoAnnotationsScanner } } - protected Map scanFile( File archiveFile, List includePatterns ) + protected Map scanFile( File archiveFile, List includePatterns, + Artifact artifact ) throws IOException, ExtractionException { if ( !archiveFile.exists() ) @@ -127,6 +131,7 @@ public class DefaultMojoAnnotationsScanner getLogger().debug( "found MojoAnnotatedClass:" + mojoClassVisitor.getMojoAnnotatedClass().getClassName() + ":" + mojoClassVisitor.getMojoAnnotatedClass() ); + mojoClassVisitor.getMojoAnnotatedClass().setArtifact( artifact ); mojoAnnotatedClasses.put( mojoClassVisitor.getMojoAnnotatedClass().getClassName(), mojoClassVisitor.getMojoAnnotatedClass() ); } @@ -140,7 +145,8 @@ public class DefaultMojoAnnotationsScanner return mojoAnnotatedClasses; } - protected Map scanDirectory( File classDirectory, List includePatterns ) + protected Map scanDirectory( File classDirectory, List includePatterns, + Artifact artifact ) throws IOException, ExtractionException { if ( !classDirectory.exists() ) @@ -176,6 +182,7 @@ public class DefaultMojoAnnotationsScanner getLogger().debug( "found MojoAnnotatedClass:" + mojoClassVisitor.getMojoAnnotatedClass().getClassName() + ":" + mojoClassVisitor.getMojoAnnotatedClass() ); + mojoClassVisitor.getMojoAnnotatedClass().setArtifact( artifact ); mojoAnnotatedClasses.put( mojoClassVisitor.getMojoAnnotatedClass().getClassName(), mojoClassVisitor.getMojoAnnotatedClass() ); } diff --git a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/MojoAnnotatedClass.java b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/MojoAnnotatedClass.java index 2cc65d2..847634e 100644 --- a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/MojoAnnotatedClass.java +++ b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/MojoAnnotatedClass.java @@ -18,6 +18,7 @@ package org.apache.maven.tools.plugin.annotations.scanner; * under the License. */ +import org.apache.maven.artifact.Artifact; import org.apache.maven.tools.plugin.annotations.datamodel.ComponentAnnotationContent; import org.apache.maven.tools.plugin.annotations.datamodel.ExecuteAnnotationContent; import org.apache.maven.tools.plugin.annotations.datamodel.MojoAnnotationContent; @@ -50,6 +51,11 @@ public class MojoAnnotatedClass */ private Map components; + /** + * artifact which contains this annotation + */ + private Artifact artifact; + public MojoAnnotatedClass() { // no op @@ -129,6 +135,15 @@ public class MojoAnnotatedClass return this; } + public Artifact getArtifact() + { + return artifact; + } + + public void setArtifact( Artifact artifact ) + { + this.artifact = artifact; + } @Override public String toString() diff --git a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/MojoAnnotationsScannerRequest.java b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/MojoAnnotationsScannerRequest.java index 90d4859..af144d1 100644 --- a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/MojoAnnotationsScannerRequest.java +++ b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/MojoAnnotationsScannerRequest.java @@ -19,6 +19,8 @@ package org.apache.maven.tools.plugin.annotations.scanner; */ import org.apache.maven.artifact.Artifact; +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.artifact.ProjectArtifactMetadata; import java.io.File; import java.util.ArrayList; @@ -41,6 +43,8 @@ public class MojoAnnotationsScannerRequest private List sourceDirectories = new ArrayList(); + private MavenProject project; + public MojoAnnotationsScannerRequest() { // no o @@ -85,4 +89,14 @@ public class MojoAnnotationsScannerRequest { this.sourceDirectories = sourceDirectories; } + + public MavenProject getProject() + { + return project; + } + + public void setProject( MavenProject project ) + { + this.project = project; + } } diff --git a/maven-plugin-tools-annotations/src/test/java/org/apache/maven/tools/plugin/annotations/TestAnnotationsReader.java b/maven-plugin-tools-annotations/src/test/java/org/apache/maven/tools/plugin/annotations/TestAnnotationsReader.java index 8856e90..0e13bad 100644 --- a/maven-plugin-tools-annotations/src/test/java/org/apache/maven/tools/plugin/annotations/TestAnnotationsReader.java +++ b/maven-plugin-tools-annotations/src/test/java/org/apache/maven/tools/plugin/annotations/TestAnnotationsReader.java @@ -22,6 +22,7 @@ import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugins.annotations.Execute; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.project.MavenProject; import org.apache.maven.tools.plugin.annotations.datamodel.ComponentAnnotationContent; import org.apache.maven.tools.plugin.annotations.datamodel.ParameterAnnotationContent; import org.apache.maven.tools.plugin.annotations.scanner.MojoAnnotatedClass; @@ -50,6 +51,7 @@ public class TestAnnotationsReader MojoAnnotationsScannerRequest request = new MojoAnnotationsScannerRequest(); request.setClassesDirectories( Collections.singletonList( new File( "target/test-classes" ) ) ); request.setIncludePatterns( Arrays.asList( "**/FooMojo.class" ) ); + request.setProject( new MavenProject( ) ); Map mojoAnnotatedClasses = mojoAnnotationsScanner.scan( request );