Maven 插件执行 ID

2022-09-01 23:22:22

我有一个关于maven插件中的执行ID的简单问题。

    <groupId>org.codehaus.mojo</groupId>
    <artifactId>gwt-maven-plugin</artifactId>
    <version>2.7.0</version>
    <executions>
    <execution>
        <id>gwt-process-resources</id>
        <goals>
            <goal>i18n</goal>
            <goal>generateAsync</goal>
        </goals>
    </execution>
</executions>

有人可以向我解释这个执行Id是做什么的吗?目标是如何触发的?我可以直接调用“gwt-process-resources”来执行这两个目标吗?如果是,我该怎么做?


答案 1

<id></id>存在只是为了让您能够区分其他执行。执行实际生成时将显示此标记。

您的执行示例将调用您指定的两个目标:和 。i18ngenerateAsync

如果插件未绑定到特定阶段(、、、等),则不会执行您的执行。插件的文档应该说明是否是这种情况。process-resourcespackageinstall

您可以使用 > 标记指定/覆盖默认阶段:<phase

...
<execution>
  <id>gwt-process-resources</id>
  <phase>process-resources</phase> <!-- If you need to override -->
  <goals>
    <goal>i18n</goal>
    <goal>generateAsync</goal>
  </goals>
</execution>
...

...

目标被触发:

  • 自动(由其默认阶段隐式或显式如上所述)
  • 通过命令行执行:mvn <plugin name>:<goal>

答案 2

这里有一个非常简单的解释:

您不能直接调用 excecution ids

  mvn gwt-process-resources

将不起作用,因为 gwt-process-resources 只是一个 id。

如果pom中没有声明,那么您可能需要查看插件的文档并找到相应的默认阶段。如果你看看gwt插件的文档<phase>

  • gwt:i18n 默认绑定到生成源。
  • gwt:generateAsync 默认情况下绑定到生命周期阶段:生成源。

目标是如何触发的?

如果您这样做

mvn compile

=>编译>maven生命周期
中的生成源 => maven 在 gwt:generateAsync
之后执行 gwt:i18n =>按照它们在 pom 中声明的顺序执行.xml因为它们绑定到某个阶段“生成源”


推荐