Maven插件执行ID

时间:2015-10-22 10:12:39

标签: java maven gwt

我有一个关于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>

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

4 个答案:

答案 0 :(得分:12)

<id></id>仅存在于您能够区分其他执行的情况。执行实际构建时将显示此标记。

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

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

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

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

答案 1 :(得分:3)

这是一个非常简单的解释:

您无法直接致电执行ID

  mvn gwt-process-resources
由于 gwt-process-resources 只是一个id,

将无效。

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

  • gwt:i18n默认绑定为generate-sources。
  • gwt:generateAsync默认绑定到生命周期阶段:generate-sources。

如何触发目标?

如果你这样做

mvn compile

=&GT;编译&gt; maven生命周期中的生成源 =&GT; maven执行gwt:i18n之后gwt:generateAsync
=&GT;按照它们在pom.xml中声明的顺序执行,因为它们绑定到某些阶段&#34; generate-sources&#34;

答案 2 :(得分:0)

某些插件(例如,编译插件)将在临时文件名中使用“ id”。因此,更改“ id”时,请确保不要使用诸如“:”之类的字符,这些字符可能会导致格式化有效文件名路径时出现问题。

答案 3 :(得分:-1)

  

请注意,虽然执行ID必须在POM中单个插件的所有执行中都是唯一的,但它们在POM的继承层次结构中不必是唯一的。合并来自不同POM的相同id的执行。这同样适用于由配置文件定义的执行。

https://maven.apache.org/guides/mini/guide-configuring-plugins.html#Using_the_executions_Tag