1

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

4

1 回答 1

1

在第一个示例中,您仅将2.7版中的 Cobertura 添加到阶段生成的报告中site。目标cobertura:cobertura必然test,即单独的生命周期

为了解决这样的问题,有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>
于 2015-04-19T13:28:15.827 回答