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