从 maven-plugin-plugin 3.0 版本开始,您可以使用 Java5 注解来生成插件描述符文件。
注意使用注释,您的 Mojo 超类不必在同一个项目中。假设超类也使用注解,它现在可以来自反应器项目或外部依赖项。默认情况下会扫描所有依赖项,但这可以通过mojoDependencies参数减少。@since由于 javadoc doclet 对,和 comments仍然有用,@deprecated因此仍然会扫描源。因此,如果您使用外部依赖项,您仍然必须提供带有源(sources分类器)的工件以提供文档(如果缺少此工件源,工具将跳过错误)。
使用 4 个注释指定插件描述符生成的信息:
@Mojo:此注释会将您的课程标记为 Mojo,@Execute:如果您的 Mojo 需要分叉一个生命周期,则使用它,@Parameter:用于配置你的 Mojo 参数,@Component: 用于配置 Plexus 组件或 Maven 上下文组件的注入。有关这些注释的更多信息,请参阅相应的文档。
请注意,插件工具 Java 注释以插件工具 Javadoc 标签命名,但有以下细微差别:
| 插件工具 Javadoc 标签 | 插件工具 Java 注解 | 
|---|---|
@goal "goal-name" | 
@Mojo( name = "goal-name" ) | 
@phase "<phase-name>" | 
@Mojo( defaultPhase = LifecyclePhase.<phase> ) | 
为了能够使用这些 Java 注释,您需要添加到您的插件 POMmaven-plugin-annotations依赖项,最好使用provided范围。
<project>
  ...
  <packaging>maven-plugin</packaging>
  ...
  <dependencies>
    <!-- dependencies to annotations -->
    <dependency>
      <groupId>org.apache.maven.plugin-tools</groupId>
      <artifactId>maven-plugin-annotations</artifactId>
      <version>3.6.4</version>
      <scope>provided</scope> <!-- annotations are not used at runtime because @Retention(value=CLASS), they are needed only to build the plugin -->
    </dependency>
  </dependencies>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-plugin-plugin</artifactId>
        <version>3.6.4</version>
        <executions>
          <!-- if you want to generate help goal -->
          <execution>
            <id>help-goal</id>
            <goals>
              <goal>helpmojo</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  ...
  </build>
  ...
</project>