我在POM中有这个部分:
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
</plugin>
</plugins>
</reporting>
当我从终端调用此命令时:
mvn clean cobertura:cobertura
使用 cobertura-maven-plugin
版本 2.6 :
[INFO] >>> cobertura-maven-plugin:2.6:cobertura (default-cli) > [cobertura]test @ myproject >>>
如果我也添加此部分:
<build>
<!-- ... -->
<plugins>
<!-- ... -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
</plugin>
</plugins>
</build>
版本 2.7 按预期使用。这是正常的吗?
答案 0 :(得分:1)
在第一个示例中,您已将版本 2.7 中的Cobertura仅添加到site
阶段生成的报告中。目标cobertura:cobertura
为bound到test
阶段,这是独立的lifecycle。
为了解决此类问题,有pluginManagement
section。将以下内容添加到POM:
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
</plugin>
</plugins>
</pluginManagement>
并且其他地方使用Cobertura而不提供版本:
<build>
<!-- ... -->
<plugins>
<!-- ... -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!-- ... -->
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
</plugin>
</plugins>
</reporting>