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

jam*_*her 5 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>
Run Code Online (Sandbox Code Playgroud)

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

Aar*_*lla 5

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的执行.