| ------ |
| 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 |
| |
| 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, |