Maven Plugin Tool for Java Annotated with Mojo Javadoc Tags

This Mojo descriptor extractor is deprecated and should no longer be used. Rely on Maven Plugin Tool for Annotations instead.

The Maven Plugin Tool for Java is the java-javadoc implementation of maven-plugin-tools-api to extract descriptors for plugins written in Java annotated with Mojo Javadoc Tags.

Supported Mojo Javadoc Tags

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.project.MavenProject;
import org.apache.maven.settings.Settings;

/**
 * Mojo Description: goal is the only required annotation.
 *
 * @goal <goalName>
 * @aggregator
 * @configurator <roleHint>
 * @execute phase="<phaseName>" lifecycle="<lifecycleId>" goal="<goalName>"
 * @executionStrategy <once-per-session|always> (unsupported since Maven 3.0)
 * @inheritByDefault <true|false> (unsupported since Maven 3.0)
 * @instantiationStrategy <per-lookup|singleton|keep-alive|poolable>
 * @phase <phaseName>
 * @requiresDependencyResolution <compile|runtime|compile+runtime|test>
 * @requiresDependencyCollection <compile|runtime|compile+runtime|test> (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 (since Maven 3.0)
 * @since <since-text>
 * @deprecated <deprecated-text>
 */
public class MyMojo
    extends AbstractMojo
{
    /**
     * Parameter description.
     *
     * @parameter name="parameter" alias="myAlias" implementation="" property="aProperty" default-value="${anExpression}"
     * @readonly
     * @required
     * @since <since-text>
     * @deprecated <deprecated-text>
     */
    private String parameter;

    /**
     * @component role="..." roleHint="..."
     */
    private Component component;

    // sample objects taken from Maven API through PluginParameterExpressionEvaluator

    /**
     * @parameter default-value="${session}"
     * @readonly
     */
    private MavenSession session;

    /**
     * @parameter default-value="${project}"
     * @readonly
     */
    private MavenProject project;

    /**
     * @parameter default-value="${mojoExecution}"
     * @readonly
     */
    private MojoExecution mojo;

    /**
     * @parameter default-value="${plugin}" // Maven 3 only
     * @readonly
     */
    private PluginDescriptor plugin;

    /**
     * @parameter default-value="${settings}"
     * @readonly
     */
    private Settings settings;

    /**
    * @parameter default-value="${project.basedir}"
    * @readonly
    */
    private File basedir;

    /**
    * @parameter default-value="${project.build.directory}"
    * @readonly
    */
    private File target;

    public void execute()
    {
        ...
    }
}

Notice: before 3.0, property was replaced by expression, with ${ } required (expression="${aProperty}"), but starting with 3.0, you can omit it (expression="aProperty"), or preferably use property="aProperty".

See also