在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>
这些值?改变这些字符串的行为差异是什么?删除这些元素意味着什么?
答案 0 :(得分:5)
id
元素有两个功能:
第一种情况很简单:它只允许你给执行一个有意义的名字。
第二种情况意味着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的讨论