Maven Plugin Tool for Annotations
The Maven Plugin Tool for Annotations is the java-annotations
implementation of maven-plugin-tools-api to extract descriptors from plugins written in Java with Maven Plugin Tools Java Annotations.
Supported Annotations
import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecution; import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Execute; import org.apache.maven.plugins.annotations.InstantiationStrategy; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.ResolutionScope; import org.apache.maven.project.MavenProject; import org.apache.maven.settings.Settings; /** * Mojo Description. @Mojo( name = "<goal-name>" ) is the minimal required annotation. * * @since <since-text> * @deprecated <deprecated-text> */ @Mojo( name = "<goal-name>", aggregator = <false|true>, configurator = "<role hint>", executionStrategy = "<once-per-session|always>", // (unsupported since Maven 3.0) inheritByDefault = <true|false>, // (unsupported since Maven 3.0) instantiationStrategy = InstantiationStrategy.<strategy>, defaultPhase = LifecyclePhase.<phase>, requiresDependencyResolution = ResolutionScope.<scope>, requiresDependencyCollection = ResolutionScope.<scope>, // (since Maven 3.0) requiresDirectInvocation = <false|true>, // (unsupported since Maven 3.0) requiresOnline = <false|true>, requiresProject = <true|false>, requiresReports = <false|true>, // (unsupported since Maven 3.0) threadSafe = <false|true> ) // (since Maven 3.0) @Execute( goal = "<goal-name>", phase = LifecyclePhase.<phase>, lifecycle = "<lifecycle-id>" ) public class MyMojo extends AbstractMojo { /** * Parameter description. * * @since <since-text> * @deprecated <deprecated-text> */ @Parameter( name = "parameter", alias = "myAlias", property = "a.property", defaultValue = "an expression, possibly with ${variables} and pseudo-parameter expressions ${project.xxx.yyy}", readonly = <false|true>, required = <false|true> ) private String parameter; @Component( role = MyComponentExtension.class, hint = "..." ) private MyComponent component; // pseudo-parameters (marked read-only) permitting injection of Maven build context objects // sample objects taken from Maven API through PluginParameterExpressionEvaluator // https://maven.apache.org/ref/current/maven-core/apidocs/org/apache/maven/plugin/PluginParameterExpressionEvaluator.html // plugins targetting Maven 3.2.5+ (after MNG-5695) should not use these pseudo-parameters any more, // but @Component and Maven APIs to get better compiler-time checks // @Parameter( defaultValue = "${session}", readonly = true ) @Component // since Maven 3.2.5, thanks to MNG-5695 private MavenSession session; // @Parameter( defaultValue = "${project}", readonly = true ) @Component // since Maven 3.2.5, thanks to MNG-5695 private MavenProject project; // @Parameter( defaultValue = "${mojoExecution}", readonly = true ) @Component // since Maven 3.2.5, thanks to MNG-5695 private MojoExecution mojoExecution; @Parameter( defaultValue = "${reactorProjects}", readonly = true ) // prefer using session.getProjects() private List<MavenProject> reactorProjects; @Parameter( defaultValue = "${plugin}", readonly = true ) // Maven 3 only // prefer using mojoExecution.getMojoDescriptor() private PluginDescriptor plugin; @Parameter( defaultValue = "${settings}", readonly = true ) // prefer using session.getSettings() private Settings settings; @Parameter( defaultValue = "${project.basedir}", readonly = true ) // prefer using project.getBasedir() private File basedir; @Parameter( defaultValue = "${project.build.directory}", readonly = true ) // prefer using project.getBuild().getDirectory() private File target; /** * @Parameter for methods can be used only with public setter methods */ @Parameter( ... ) public setOutput( File output ) { ... } public void execute() { ... } }
See also
- Maven Plugin Tools Java Annotations
- Mojo API Specification
- META-INF/maven/plugin.xml plugin descriptor
- PluginParameterExpressionEvaluator, used to evaluate plugin parameters values during Mojo configuration,
- pseudo parameters:
PluginParameterExpressionEvaluator
javadoc / source- MNG-5695: scoped objects added to Guice/Sisu in maven-core 3.2.5