@Execute can come from parent classes hierarchy
order parameters/components on fieldName order to ensure stability of tests. git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/branches/MPLUGIN-189@1336290 13f79535-47bb-0310-9956-ffa450edef68master
parent
d1e2e09ba8
commit
ccc68be0c6
|
|
@ -36,9 +36,9 @@ assert mojo.configuration.touchFile[0].'@default-value' == '${project.build.dire
|
||||||
|
|
||||||
assert mojo.requirements.requirement.size() == 3
|
assert mojo.requirements.requirement.size() == 3
|
||||||
|
|
||||||
assert mojo.requirements.requirement[1].role.text() == 'org.apache.maven.project.MavenProjectHelper'
|
assert mojo.requirements.requirement[2].role.text() == 'org.apache.maven.project.MavenProjectHelper'
|
||||||
assert mojo.requirements.requirement[1].'role-hint'.text() == 'default'
|
assert mojo.requirements.requirement[2].'role-hint'.text() == 'default'
|
||||||
assert mojo.requirements.requirement[1].'field-name'.text() == 'projectHelper'
|
assert mojo.requirements.requirement[2].'field-name'.text() == 'projectHelper'
|
||||||
|
|
||||||
assert mojo.parameters.parameter.size() == 3
|
assert mojo.parameters.parameter.size() == 3
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,9 +34,9 @@ assert mojo.configuration.touchFile[0].'@default-value' == '${project.build.dire
|
||||||
|
|
||||||
assert mojo.requirements.requirement.size() == 3
|
assert mojo.requirements.requirement.size() == 3
|
||||||
|
|
||||||
assert mojo.requirements.requirement[1].role.text() == 'org.apache.maven.project.MavenProjectHelper'
|
assert mojo.requirements.requirement[2].role.text() == 'org.apache.maven.project.MavenProjectHelper'
|
||||||
assert mojo.requirements.requirement[1].'role-hint'.text() == 'default'
|
assert mojo.requirements.requirement[2].'role-hint'.text() == 'default'
|
||||||
assert mojo.requirements.requirement[1].'field-name'.text() == 'projectHelper'
|
assert mojo.requirements.requirement[2].'field-name'.text() == 'projectHelper'
|
||||||
|
|
||||||
assert mojo.parameters.parameter.size() == 3
|
assert mojo.parameters.parameter.size() == 3
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,19 @@
|
||||||
<artifactId>qdox</artifactId>
|
<artifactId>qdox</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-compiler-manager</artifactId>
|
||||||
|
<version>1.8.6</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-component-api</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
@ -92,6 +105,17 @@
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-source-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>test-jar-no-fork</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,7 @@ import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
import java.util.TreeSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Olivier Lamy
|
* @author Olivier Lamy
|
||||||
|
|
@ -297,19 +298,6 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
return javaClassMap;
|
return javaClassMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<File> toFiles( List<String> directories )
|
|
||||||
{
|
|
||||||
if ( directories == null )
|
|
||||||
{
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
List<File> files = new ArrayList<File>( directories.size() );
|
|
||||||
for ( String directory : directories )
|
|
||||||
{
|
|
||||||
files.add( new File( directory ) );
|
|
||||||
}
|
|
||||||
return files;
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<MojoDescriptor> toMojoDescriptors( Map<String, MojoAnnotatedClass> mojoAnnotatedClasses,
|
private List<MojoDescriptor> toMojoDescriptors( Map<String, MojoAnnotatedClass> mojoAnnotatedClasses,
|
||||||
PluginToolsRequest request )
|
PluginToolsRequest request )
|
||||||
|
|
@ -345,8 +333,7 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
mojoDescriptor.setDeprecated( mojo.getDeprecated() );
|
mojoDescriptor.setDeprecated( mojo.getDeprecated() );
|
||||||
mojoDescriptor.setThreadSafe( mojo.threadSafe() );
|
mojoDescriptor.setThreadSafe( mojo.threadSafe() );
|
||||||
|
|
||||||
ExecuteAnnotationContent execute = mojoAnnotatedClass.getExecute();
|
ExecuteAnnotationContent execute = findExecuteInParentHierarchy( mojoAnnotatedClass, mojoAnnotatedClasses );
|
||||||
|
|
||||||
if ( execute != null )
|
if ( execute != null )
|
||||||
{
|
{
|
||||||
mojoDescriptor.setExecuteGoal( execute.goal() );
|
mojoDescriptor.setExecuteGoal( execute.goal() );
|
||||||
|
|
@ -355,7 +342,7 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
}
|
}
|
||||||
|
|
||||||
mojoDescriptor.setExecutionStrategy( mojo.executionStrategy() );
|
mojoDescriptor.setExecutionStrategy( mojo.executionStrategy() );
|
||||||
// FIXME olamy wtf ?
|
// ???
|
||||||
//mojoDescriptor.alwaysExecute(mojo.a)
|
//mojoDescriptor.alwaysExecute(mojo.a)
|
||||||
|
|
||||||
mojoDescriptor.setGoal( mojo.name() );
|
mojoDescriptor.setGoal( mojo.name() );
|
||||||
|
|
@ -367,7 +354,8 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
getParametersParentHierarchy( mojoAnnotatedClass, new HashMap<String, ParameterAnnotationContent>(),
|
getParametersParentHierarchy( mojoAnnotatedClass, new HashMap<String, ParameterAnnotationContent>(),
|
||||||
mojoAnnotatedClasses );
|
mojoAnnotatedClasses );
|
||||||
|
|
||||||
for ( ParameterAnnotationContent parameterAnnotationContent : parameters.values() )
|
for ( ParameterAnnotationContent parameterAnnotationContent : new TreeSet<ParameterAnnotationContent>(
|
||||||
|
parameters.values() ) )
|
||||||
{
|
{
|
||||||
org.apache.maven.plugin.descriptor.Parameter parameter =
|
org.apache.maven.plugin.descriptor.Parameter parameter =
|
||||||
new org.apache.maven.plugin.descriptor.Parameter();
|
new org.apache.maven.plugin.descriptor.Parameter();
|
||||||
|
|
@ -388,7 +376,8 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
getComponentsParentHierarchy( mojoAnnotatedClass, new HashMap<String, ComponentAnnotationContent>(),
|
getComponentsParentHierarchy( mojoAnnotatedClass, new HashMap<String, ComponentAnnotationContent>(),
|
||||||
mojoAnnotatedClasses );
|
mojoAnnotatedClasses );
|
||||||
|
|
||||||
for ( ComponentAnnotationContent componentAnnotationContent : components.values() )
|
for ( ComponentAnnotationContent componentAnnotationContent : new TreeSet<ComponentAnnotationContent>(
|
||||||
|
components.values() ) )
|
||||||
{
|
{
|
||||||
org.apache.maven.plugin.descriptor.Parameter parameter =
|
org.apache.maven.plugin.descriptor.Parameter parameter =
|
||||||
new org.apache.maven.plugin.descriptor.Parameter();
|
new org.apache.maven.plugin.descriptor.Parameter();
|
||||||
|
|
@ -407,6 +396,29 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
return mojoDescriptors;
|
return mojoDescriptors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected ExecuteAnnotationContent findExecuteInParentHierarchy( MojoAnnotatedClass mojoAnnotatedClass,
|
||||||
|
Map<String, MojoAnnotatedClass> mojoAnnotatedClasses )
|
||||||
|
{
|
||||||
|
|
||||||
|
if ( mojoAnnotatedClass.getExecute() != null )
|
||||||
|
{
|
||||||
|
return mojoAnnotatedClass.getExecute();
|
||||||
|
}
|
||||||
|
String parentClassName = mojoAnnotatedClass.getParentClassName();
|
||||||
|
if ( StringUtils.isEmpty( parentClassName ) )
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
MojoAnnotatedClass parent = mojoAnnotatedClasses.get( parentClassName );
|
||||||
|
if ( parent == null )
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return findExecuteInParentHierarchy( parent, mojoAnnotatedClasses );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected Map<String, ParameterAnnotationContent> getParametersParentHierarchy(
|
protected Map<String, ParameterAnnotationContent> getParametersParentHierarchy(
|
||||||
MojoAnnotatedClass mojoAnnotatedClass, Map<String, ParameterAnnotationContent> parameters,
|
MojoAnnotatedClass mojoAnnotatedClass, Map<String, ParameterAnnotationContent> parameters,
|
||||||
Map<String, MojoAnnotatedClass> mojoAnnotatedClasses )
|
Map<String, MojoAnnotatedClass> mojoAnnotatedClasses )
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ package org.apache.maven.tools.plugin.annotations.datamodel;
|
||||||
*/
|
*/
|
||||||
public class AnnotatedField
|
public class AnnotatedField
|
||||||
extends AnnotatedContent
|
extends AnnotatedContent
|
||||||
|
implements Comparable<AnnotatedField>
|
||||||
{
|
{
|
||||||
private String fieldName;
|
private String fieldName;
|
||||||
|
|
||||||
|
|
@ -51,4 +52,9 @@ public class AnnotatedField
|
||||||
sb.append( '}' );
|
sb.append( '}' );
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int compareTo( AnnotatedField annotatedField )
|
||||||
|
{
|
||||||
|
return getFieldName().compareTo( annotatedField.getFieldName() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ package org.apache.maven.tools.plugin.annotations;
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
|
||||||
import org.apache.maven.plugin.AbstractMojo;
|
import org.apache.maven.plugin.AbstractMojo;
|
||||||
import org.apache.maven.plugin.MojoExecutionException;
|
import org.apache.maven.plugin.MojoExecutionException;
|
||||||
import org.apache.maven.plugin.MojoFailureException;
|
import org.apache.maven.plugin.MojoFailureException;
|
||||||
|
|
@ -26,6 +27,7 @@ import org.apache.maven.plugins.annotations.Execute;
|
||||||
import org.apache.maven.plugins.annotations.LifecyclePhase;
|
import org.apache.maven.plugins.annotations.LifecyclePhase;
|
||||||
import org.apache.maven.plugins.annotations.Mojo;
|
import org.apache.maven.plugins.annotations.Mojo;
|
||||||
import org.apache.maven.plugins.annotations.Parameter;
|
import org.apache.maven.plugins.annotations.Parameter;
|
||||||
|
import org.codehaus.plexus.compiler.manager.CompilerManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Olivier Lamy
|
* @author Olivier Lamy
|
||||||
|
|
@ -35,17 +37,32 @@ import org.apache.maven.plugins.annotations.Parameter;
|
||||||
public class FooMojo
|
public class FooMojo
|
||||||
extends AbstractMojo
|
extends AbstractMojo
|
||||||
{
|
{
|
||||||
@Parameter( expression = "${thebar}", required = true)
|
/**
|
||||||
private String bar;
|
* the cool bar to go
|
||||||
|
* @since 1.0
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@Parameter( expression = "${thebar}", required = true, defaultValue = "coolbar" )
|
||||||
|
protected String bar;
|
||||||
|
|
||||||
@Parameter( expression = "${thebeer}" )
|
/**
|
||||||
private String beer;
|
* beer for non french folks
|
||||||
|
* @deprecated wine is better
|
||||||
|
*/
|
||||||
|
@Parameter( expression = "${thebeer}", defaultValue = "coolbeer" )
|
||||||
|
protected String beer;
|
||||||
|
|
||||||
@Component( role = "wine", roleHint = "bordeaux" )
|
/**
|
||||||
private Mojo wine;
|
* Plexus compiler manager.
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
protected CompilerManager compilerManager;
|
||||||
|
|
||||||
@Component( role = "wine", roleHint = "foo" )
|
/**
|
||||||
private Mojo foo;
|
*
|
||||||
|
*/
|
||||||
|
@Component( role = "org.apache.maven.artifact.metadata.ArtifactMetadataSource", roleHint = "maven" )
|
||||||
|
protected ArtifactMetadataSource artifactMetadataSource;
|
||||||
|
|
||||||
public void execute()
|
public void execute()
|
||||||
throws MojoExecutionException, MojoFailureException
|
throws MojoExecutionException, MojoFailureException
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,8 @@ public class TestAnnotationsReader
|
||||||
|
|
||||||
Collection<ParameterAnnotationContent> parameters = mojoAnnotatedClass.getParameters().values();
|
Collection<ParameterAnnotationContent> parameters = mojoAnnotatedClass.getParameters().values();
|
||||||
Assertions.assertThat( parameters ).isNotNull().isNotEmpty().hasSize( 2 ).contains(
|
Assertions.assertThat( parameters ).isNotNull().isNotEmpty().hasSize( 2 ).contains(
|
||||||
new ParameterAnnotationContent( "bar", null, "${thebar}", null, true, false, String.class.getName() ),
|
new ParameterAnnotationContent( "bar", null, "${thebar}", "coolbar", true, false, String.class.getName() ),
|
||||||
new ParameterAnnotationContent( "beer", null, "${thebeer}", null, false, false, String.class.getName() ) );
|
new ParameterAnnotationContent( "beer", null, "${thebeer}", "coolbeer", false, false,
|
||||||
|
String.class.getName() ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue