2014-10-28 46 views
3

在Maven <plugin>元素中,有一个包含多个<execution>元素的<executions>元素。每个<execution>元素可以包含一个包含字符串的<id>元素。什么引用那些<id>...</id>元素?忽略该元素意味着什么? <id>元素的语义是什么?什么引用了Maven插件执行的<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>值?改变这些字符串的行为差异是什么?删除这些元素意味着什么?

回答

4

id元素有两个功能:

  1. 文档
  2. 允许的Maven知道,当你想创建一个新的执行,当你要修改现有一个

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

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

看到相同ID的http://maven.apache.org/guides/mini/guide-configuring-plugins.html#Using_the_executions_Tag

处决从不同的POM合并。

+0

谢谢。合并多个执行是什么意思? – jameshfisher 2014-10-28 13:43:19

+0

如果您使用相同的ID,则Maven将加载现有的执行并添加您的XML。使用'help:effective-pom'来查看结果。如果执行过多或参数错误,则需要更改ID并添加更多配置。 – 2014-10-28 14:00:58

+0

是否有关于这种合并语义的文档? – jameshfisher 2014-10-28 14:43:44