使用插件工具 Java 注解

从 maven-plugin-plugin 3.0 版本开始,您可以使用 Java5 注解来生成插件描述符文件。

注意使用注释,您的 Mojo 超类不必在同一个项目中。假设超类也使用注解,它现在可以来自反应器项目或外部依赖项。默认情况下会扫描所有依赖项,但这可以通过mojoDependencies参数减少。@since由于 javadoc doclet 对,和 comments仍然有用,@deprecated因此仍然会扫描源。因此,如果您使用外部依赖项,您仍然必须提供带有源(sources分类器)的工件以提供文档(如果缺少此工件源,工具将跳过错误)。

注释

使用 4 个注释指定插件描述符生成的信息:

  • 2个类级注释:
    • @Mojo:此注释会将您的课程标记为 Mojo,
    • @Execute:如果您的 Mojo 需要分叉一个生命周期,则使用它,
  • 2个字段级注释:
    • @Parameter:用于配置你的 Mojo 参数,
    • @Component: 用于配置 Plexus 组件或 Maven 上下文组件的注入。

有关这些注释的更多信息,请参阅相应的文档

请注意,插件工具 Java 注释以插件工具 Javadoc 标签命名,但有以下细微差别:

插件工具 Javadoc 标签 插件工具 Java 注解
@goal "goal-name" @Mojo( name = "goal-name" )
@phase "<phase-name>" @Mojo( defaultPhase = LifecyclePhase.<phase> )

POM 配置

为了能够使用这些 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>