繁体   English   中英

Maven 插件执行ID

[英]Maven plugin execution ID

我有一个关于 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”来执行这两个目标吗? 如果是,我该怎么做?

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

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

您不能直接调用执行 ID

  mvn gwt-process-resources

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

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

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

目标是如何触发的?

如果你这样做

mvn compile

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

是的,因为Maven 3.3.1你可以,但你需要明确执行每个目标。 有几种方法。

这总是有效的:

mvn <group-id>:<artifact-id>:(<version>):<goal>@<execution-id>

在你的情况下:

mvn org.codehaus.mojo:gwt-maven-plugin:i18n@gwt-process-resources (可以跳过版本)

另一种(更方便的)方法是使用目标的简称,如插件页面顶部所示:

mvn gwt:i18n@gwt-process-resources

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM