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