Maven + Cobertura:生成站点和检查构建参数时出错

时间:2016-08-24 19:01:23

标签: maven cobertura

如果Cobertura报告的代码覆盖率限制未得到满足,我已将项目的Maven构建配置为失败。工作良好。当我使用Maven的网站生成工具时,我现在尝试在Cobertura报告中生成并链接,但在执行mvn site时出现此错误:

Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.0:site (default-site) on project kb-framework: 
failed to get report for org.codehaus.mojo:cobertura-maven-plugin: Failed to execute goal org.codehaus.mojo:cobertura-maven-plugin:2.7:instrument 
(cobertura-check) on project kb-framework: 
Unable to prepare instrumentation directory. source and destination are the same directory.

使用下面配置的pom.xml,我可以:

  1. 运行mvn verify并查看构建通过/失败
  2. 删除cobertura-check执行和mvn site工作。在构建期间没有进行检查。
  3. 使用cobertura目标向构建段添加执行,在验证阶段生成HTML报告,并仍然使用检查目标。
  4. 当我按照配置进行mvn site时,测试和检测似乎会运行两次。

    这个错误似乎也是因为第二个仪器正在完成。如果我用cobertura报告生成目标替换cobertura检查目标,则构建仍然会失败并显示相同的消息。所以检查目标不是问题,仪器是。

    所以:任何人都可以帮我配置我的pom.xml以在mvn verify上传递/失败构建并在执行mvn site时生成并链接HTML报告吗?

    以下是pom.xml的相关部分:

    <build>
      <plugins>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>cobertura-maven-plugin</artifactId>
          <version>2.7</version>
          <configuration>
            <check>
              <branchRate>85</branchRate>
              <lineRate>90</lineRate>
              <haltOnFailure>true</haltOnFailure>
              <totalBranchRate>90</totalBranchRate>
              <totalLineRate>90</totalLineRate>
              <packageBranchRate>90</packageBranchRate>
              <packageLineRate>90</packageLineRate>
            </check>
          <instrumentation>
            <excludes>
              <!-- some excludes in here -->
            </excludes>
          </instrumentation>
        </configuration>
        <executions>
          <execution>
            <id>cobertura-clean</id>
            <phase>verify</phase>
            <goals>
              <goal>clean</goal>
            </goals>
          </execution>
          <execution>
            <id>cobertura-check</id>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin> 
    </plugins>
    
    <reporting>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.7</version>
        <configuration>
         <formats>
           <format>html</format>
           <format>xml</format>
         </formats>
        </configuration>
      </plugin> 
    </reporting>
    

1 个答案:

答案 0 :(得分:0)

我明白了。显然我需要在站点生成期间使用干净的目标,然后我可以在构建阶段使用我想要的任何目标。我在pom.xml中添加了一个reportSet块,如下所示;现在我可以在mvn verify期间收到通过/失败,并在mvn site期间在报告中链接,而不会显示错误消息。

pom.xml(问题中描述的构建阶段):

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>cobertura-maven-plugin</artifactId>
    <version>2.7</version>
    <configuration>
     <formats>
       <format>html</format>
       <format>xml</format>
     </formats>
    </configuration>
    <reportSets>
      <reportSet>
        <id>cobertura-report</id>
        <reports>
          <report>clean</report>
          <report>cobertura</report>
        </reports>
      </reportSet>
    </reportSets> 
  </plugin>