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

cobertura-maven-plugin 2.6 is used despite 2.7 is configured

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

在第一个示例中,您仅将版本 2.7 中的 Cobertura 添加到 site 阶段生成的报告中。目标 cobertura:coberturabound to test phase, which is separate lifecycle

为了解决这样的问题,有pluginManagementsection。将以下内容添加到 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>