 ------
 Introduction
 ------
 Vincent Siveton
 Hervé Boutemy
 ------
 2011-10-23
 ------

~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements.  See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership.  The ASF licenses this file
~~ to you under the Apache License, Version 2.0 (the
~~ "License"); you may not use this file except in compliance
~~ with the License.  You may obtain a copy of the License at
~~
~~   http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing,
~~ software distributed under the License is distributed on an
~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~~ KIND, either express or implied.  See the License for the
~~ specific language governing permissions and limitations
~~ under the License.

~~ NOTE: For help with the syntax of this file, see:
~~ http://maven.apache.org/doxia/references/apt-format.html

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-tools-annotations/index.html}Maven Plugin Tool for Annotations}} instead.>>

 The Maven Plugin Tool for Java is the <<<java-javadoc>>> implementation of
 {{{../maven-plugin-tools-api/index.html}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

 * {{{/developers/mojo-api-specification.html#The_Descriptor_and_Annotations}Mojo API Specification}}

 * {{{/ref/current/maven-plugin-api/plugin.html}<<<META-INF/maven/plugin.xml>>> plugin descriptor}}

 * {{{/ref/current/maven-core/apidocs/org/apache/maven/plugin/PluginParameterExpressionEvaluator.html}PluginParameterExpressionEvaluator}},
   used to evaluate plugin parameters values during Mojo configuration,
