[MPLUGIN-206] Annotations in superclasses are not found if an intermediate class is not annotated.

git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1343159 13f79535-47bb-0310-9956-ffa450edef68
master
Olivier Lamy 2012-05-28 08:15:25 +00:00
parent 3381348ff3
commit e37c9d413c
4 changed files with 34 additions and 14 deletions

View File

@ -2,3 +2,4 @@ invoker.goals.1 = clean install -DskipTests
invoker.goals.2 = org.apache.maven.its.annotation-with-inheritance:annotation-with-inheritance:1.0-SNAPSHOT:it0014 invoker.goals.2 = org.apache.maven.its.annotation-with-inheritance:annotation-with-inheritance:1.0-SNAPSHOT:it0014
invoker.goals.3 = org.apache.maven.its.annotation-with-inheritance:annotation-with-inheritance:1.0-SNAPSHOT:first invoker.goals.3 = org.apache.maven.its.annotation-with-inheritance:annotation-with-inheritance:1.0-SNAPSHOT:first
invoker.goals.4 = org.apache.maven.its.annotation-with-inheritance:annotation-with-inheritance:1.0-SNAPSHOT:help invoker.goals.4 = org.apache.maven.its.annotation-with-inheritance:annotation-with-inheritance:1.0-SNAPSHOT:help
invoker.goals.5 = org.apache.maven.its.annotation-with-inheritance:annotation-with-inheritance:1.0-SNAPSHOT:third

View File

@ -32,7 +32,6 @@ import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import java.io.File; import java.io.File;
/** /**
* Touches a test file.
* *
*/ */
public abstract class AbstractFirstMojo public abstract class AbstractFirstMojo

View File

@ -144,6 +144,12 @@ public class JavaAnnotationsMojoDescriptorExtractor
continue; continue;
} }
if ( !isMojoAnnnotatedClassCandidate( mojoAnnotatedClass ) )
{
continue;
}
MavenProject mavenProject = MavenProject mavenProject =
getFromProjectReferences( mojoAnnotatedClass.getArtifact(), request.getProject() ); getFromProjectReferences( mojoAnnotatedClass.getArtifact(), request.getProject() );
@ -184,6 +190,17 @@ public class JavaAnnotationsMojoDescriptorExtractor
return javaClassesMap; return javaClassesMap;
} }
private boolean isMojoAnnnotatedClassCandidate( MojoAnnotatedClass mojoAnnotatedClass )
{
if ( mojoAnnotatedClass == null )
{
return false;
}
return ( !mojoAnnotatedClass.getComponents().isEmpty() || !mojoAnnotatedClass.getParameters().isEmpty()
|| mojoAnnotatedClass.getExecute() != null || mojoAnnotatedClass.getMojo() != null );
}
protected Map<String, JavaClass> discoverClassesFromSourcesJar( Artifact artifact, PluginToolsRequest request, protected Map<String, JavaClass> discoverClassesFromSourcesJar( Artifact artifact, PluginToolsRequest request,
String classifier ) String classifier )
throws ExtractionException throws ExtractionException
@ -205,9 +222,8 @@ public class JavaAnnotationsMojoDescriptorExtractor
// extract sources to target/maven-plugin-plugin-sources/${groupId}/${artifact}/sources // extract sources to target/maven-plugin-plugin-sources/${groupId}/${artifact}/sources
File extractDirectory = new File( request.getProject().getBuild().getDirectory(), File extractDirectory = new File( request.getProject().getBuild().getDirectory(),
"maven-plugin-plugin-sources/" + sourcesArtifact.getGroupId() + "/" "maven-plugin-plugin-sources/" + sourcesArtifact.getGroupId() + "/"
+ sourcesArtifact.getArtifactId() + "/" + sourcesArtifact.getArtifactId() + "/" + sourcesArtifact.getVersion()
+ sourcesArtifact.getVersion() + "/" + "/" + sourcesArtifact.getClassifier() );
+ sourcesArtifact.getClassifier() );
extractDirectory.mkdirs(); extractDirectory.mkdirs();
UnArchiver unArchiver = archiverManager.getUnArchiver( "jar" ); UnArchiver unArchiver = archiverManager.getUnArchiver( "jar" );

View File

@ -143,7 +143,7 @@ public class DefaultMojoAnnotationsScanner
{ {
mojoClassVisitor.getMojoAnnotatedClass().setMojo( null ); mojoClassVisitor.getMojoAnnotatedClass().setMojo( null );
} }
if ( isMojoAnnnotatedClassCandidate( mojoClassVisitor.getMojoAnnotatedClass() ) != null ) if ( isStoreClass( mojoClassVisitor.getMojoAnnotatedClass() ) != null )
{ {
getLogger().debug( getLogger().debug(
"found MojoAnnotatedClass:" + mojoClassVisitor.getMojoAnnotatedClass().getClassName() + ":" "found MojoAnnotatedClass:" + mojoClassVisitor.getMojoAnnotatedClass().getClassName() + ":"
@ -207,7 +207,7 @@ public class DefaultMojoAnnotationsScanner
{ {
mojoClassVisitor.getMojoAnnotatedClass().setMojo( null ); mojoClassVisitor.getMojoAnnotatedClass().setMojo( null );
} }
if ( isMojoAnnnotatedClassCandidate( mojoClassVisitor.getMojoAnnotatedClass() ) != null ) if ( isStoreClass( mojoClassVisitor.getMojoAnnotatedClass() ) != null )
{ {
getLogger().debug( getLogger().debug(
"found MojoAnnotatedClass:" + mojoClassVisitor.getMojoAnnotatedClass().getClassName() + ":" "found MojoAnnotatedClass:" + mojoClassVisitor.getMojoAnnotatedClass().getClassName() + ":"
@ -228,20 +228,24 @@ public class DefaultMojoAnnotationsScanner
return mojoAnnotatedClasses; return mojoAnnotatedClasses;
} }
private MojoAnnotatedClass isMojoAnnnotatedClassCandidate( MojoAnnotatedClass mojoAnnotatedClass ) private MojoAnnotatedClass isStoreClass( MojoAnnotatedClass mojoAnnotatedClass )
{ {
if ( mojoAnnotatedClass == null ) if ( mojoAnnotatedClass == null )
{ {
return null; return null;
} }
return mojoAnnotatedClass;
/**
if ( !mojoAnnotatedClass.getComponents().isEmpty() || !mojoAnnotatedClass.getParameters().isEmpty() if ( !mojoAnnotatedClass.getComponents().isEmpty() || !mojoAnnotatedClass.getParameters().isEmpty()
|| mojoAnnotatedClass.getExecute() != null || mojoAnnotatedClass.getMojo() != null ) || mojoAnnotatedClass.getExecute() != null || mojoAnnotatedClass.getMojo() != null )
{ {
return mojoAnnotatedClass; return mojoAnnotatedClass;
} }
return null; return null;
**/
} }
protected void analyzeVisitors( MojoClassVisitor mojoClassVisitor ) protected void analyzeVisitors( MojoClassVisitor mojoClassVisitor )
throws ExtractionException throws ExtractionException
{ {