什么引用了Maven插件执行的<id>值?</id>

时间:2014-10-28 13:01:52

标签: java maven

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

例如:

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

什么引用了<id>default-jar-execution</id><id>extra-jar-execution</id>这些值?改变这些字符串的行为差异是什么?删除这些元素意味着什么?

2 个答案:

答案 0 :(得分:5)

id元素有两个功能:

  1. 文档
  2. 允许Maven知道您何时要创建执行以及何时修改现有
  3. 第一种情况很简单:它只允许你给执行一个有意义的名字。

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

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

      

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

答案 1 :(得分:1)

为完整起见,我要指出的是,自Maven 3.3.1(2015年3月)以来,在从命令行调用特定于Maven的目标时,还可以使用执行ID。

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

查看有关此选项here的讨论