【问题标题】:What references the <id> value of a Maven plugin execution?什么引用了 Maven 插件执行的 <id> 值?
【发布时间】:2014-10-28 13:01:52
【问题描述】:

在 Maven &lt;plugin&gt; 元素中有一个 &lt;executions&gt; 元素,其中包含多个 &lt;execution&gt; 元素。每个&lt;execution&gt; 元素都可以有一个包含字符串的&lt;id&gt; 元素。什么引用了那些&lt;id&gt;...&lt;/id&gt; 元素?省略该元素是什么意思? &lt;id&gt; 元素的语义是什么?

例如:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <id>default-jar-execution</id>
            <configuration>
              <finalName>mainjar</finalName>
            </configuration>
          </execution>
          <execution>
            <id>extra-jar-execution</id>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <finalName>anotherjar</finalName>
            </configuration>
          </execution>
        </exectutions>
      </plugin>
      [...]
    </plugins>
  </build>
</project>

什么引用了 &lt;id&gt;default-jar-execution&lt;/id&gt; 和 &lt;id&gt;extra-jar-execution&lt;/id&gt; 值?更改这些字符串中的任何一个的行为差异是什么?删除这些元素是什么意思?

【问题讨论】:

    标签: java maven


    【解决方案1】:

    id 元素有两个功能:

    1. 文档
    2. 让 Maven 知道您何时要创建新 执行以及何时要修改现有 执行。

    第一种情况很简单:它只允许你给执行起一个有意义的名字。

    第二种情况意味着 Maven 带有默认执行,例如,当您运行 mvn help:effective-pom 时可以看到这些执行。如果要替换/扩展现有执行,则需要使用相同的id。然后 Maven 会将两者合并。

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

    来自不同 POM 的相同 id 的执行被合并。

    【讨论】:

    • 谢谢。合并多个执行是什么意思?
    • 如果您使用相同的 ID,那么 Maven 将加载现有的执行并将您的 XML 添加到其中。使用help:effective-pom 查看结果。如果执行次数过多或参数错误,则需要更改 ID 并添加更多配置。
    • 我不知道,但这很简单:加载第一个 XML,然后添加第二个。第二个中的相同叶子元素将覆盖第一个中的叶子(叶子元素是那些包含文本的元素,即配置选项值)​​。
    【解决方案2】:

    为了完整起见,我要指出,从 Maven 3.3.1(2015 年 3 月)开始,当从命令行调用 maven 特定目标时,还可以选择使用 execution-id。

    见https://maven.apache.org/docs/3.3.1/release-notes.html

    查看有关此选项的讨论here

    【讨论】:

      猜你喜欢
      • 2016-04-08
      • 1970-01-01
      • 2016-02-27
      • 1970-01-01
      • 2018-10-17
      • 2011-09-16
      • 1970-01-01
      • 2011-03-06
      • 2023-03-12
      相关资源
      最近更新 更多