尽管配置了2.7,但仍使用cobertura-maven-plugin 2.6

时间:2015-04-19 10:33:57

标签: maven cobertura maven-cobertura-plugin

我在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 按预期使用。这是正常的吗?

1 个答案:

答案 0 :(得分:1)

在第一个示例中,您已将版本 2.7 中的Cobertura仅添加到site阶段生成的报告中。目标cobertura:coberturaboundtest阶段,这是独立的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>