maven 插件的多个配置标签
Multiple configuration tags for maven plugins
根据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 插件示例。外面是不是全局配置之类的东西?
一个是全局配置,一个是execution-specific配置
全局应用只要没有其他东西覆盖它。当您调用插件的目标时(如您的示例所示),它不会引用任何特定的执行,因此它将使用全局配置
但请记住,某些插件会声明默认执行并将其绑定到某个阶段 - 这可能会在调用阶段而不是目标时干扰配置解析。
根据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 插件示例。外面是不是全局配置之类的东西?
一个是全局配置,一个是execution-specific配置
全局应用只要没有其他东西覆盖它。当您调用插件的目标时(如您的示例所示),它不会引用任何特定的执行,因此它将使用全局配置
但请记住,某些插件会声明默认执行并将其绑定到某个阶段 - 这可能会在调用阶段而不是目标时干扰配置解析。