根据maven POM reference,我们可以为maven插件定义多个<configuration>
标签。
<plugin>
<groupId/>
<artifactId/>
<version/>
<extensions/>
<executions>
<execution>
<id/>
<phase/>
<goals/>
<inherited/>
<configuration/>
</execution>
</executions>
<dependencies>
...
</dependencies>
<goals/>
<inherited/>
<configuration/>
</plugin>
如果您看到<configuration>
标签内有一个<execution>
,而其他标签外。让我们举个例子来更清楚地了解它:
示例:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<executions>
<execution>
<id>default-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<includes>
<include>**/*Tests.java</include>
<include>**/*Test.java</include>
</includes>
<excludes>
<exclude>**/Abstract*.java</exclude>
</excludes>
</configuration>
</execution>
</executions>
<configuration>
<includes>
<include>**/*Tests.java</include>
<include>**/*Test.java</include>
</includes>
<excludes>
<exclude>**/Abstract*.java</exclude>
</excludes>
</configuration>
</plugin>
考虑以下surefire插件。它有2个<configuration>
。一个在<execution>
内部,另一个在外部。
两者之间有什么区别?请以一般术语解释,而不仅限于surefire插件示例。外部有点像全局配置吗?
答案 0 :(得分:1)
一个是全局配置,另一个是特定于执行的配置
只要没有其他替代,全局便适用。当您调用插件的目标时(如您的示例所示),它不涉及任何特定的执行,因此它将使用全局配置
但是请记住,某些插件确实声明了默认执行并将其绑定到某个阶段-在调用阶段而不是目标时,这可能会干扰配置解析。