JaCoCo报告格式

时间:2016-10-30 15:09:50

标签: java maven jacoco

对于我的小型Java / Maven应用程序,我在我的POM.xml中使用JaCoCo,如下所示:

<build>
  <plugins>
    <plugin>
      <groupId>org.jacoco</groupId>
      <artifactId>jacoco-maven-plugin</artifactId>
      <version>0.7.6.201602180812</version>
      <configuration>
        <destFile>${basedir}/target/coverage-reports/jacoco.exec</destFile>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>prepare-agent</goal>
           </goals>
        </execution>
        <execution>
          <id>report</id>
          <phase>package</phase>
          <goals>
            <goal>report</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

只要我不使用<destFile>参数,target/site/jacoco文件夹中的默认报告就会以XML,CSV和HTML格式正确生成。但是当我使用<destFile>元素来更改生成报告的默认文件夹时,只会生成jacoco.exec文件,而不会生成任何其他文件。如何更改报告文件夹以及以csv,xml和html格式获取报告?

1 个答案:

答案 0 :(得分:1)

使用destFile参数,您更改了prepare-agent目标将写入执行数据文件的位置。默认情况下,这是${project.build.directory}/jacoco.exec,意思是(默认情况下仍为默认值)target/jacoco.exec。但是,report目标要求执行文件的路径在dataFile参数中传递,当然,该参数默认为${project.build.directory}/jacoco.exec,以便它们保持同步。因此,如果要更改此执行文件的路径,则需要匹配这两个参数。为了不复制路径,您可以使用Maven属性来执行此操作:

<properties>
  <jacoco.execution.file>${project.build.directory}/coverage-reports/jacoco.exec</jacoco.execution.file>
</properties>
<build>
  <plugins>
    <plugin>
      <groupId>org.jacoco</groupId>
      <artifactId>jacoco-maven-plugin</artifactId>
      <version>0.7.7.201606060606</version>
      <configuration>
        <destFile>${jacoco.execution.file}</destFile>
        <dataFile>${jacoco.execution.file}</dataFile>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>prepare-agent</goal>
          </goals>
        </execution>
        <execution>
          <id>report</id>
          <phase>prepare-package</phase>
          <goals>
            <goal>report</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

请注意,这不会更改JaCoCo报告的输出目录;这只是改变了执行文件的路径。为此,您可以使用outputDirectory参数:

  

报告的输出目录。请注意,仅当目标是从命令行或默认构建生命周期运行时,此参数才相关。如果目标是作为站点生成的一部分间接运行的,则使用Maven站点插件中配置的输出目录。

并添加了以下配置元素:

<configuration>
  <!-- rest of your JaCoCo configuration -->
  <outputDirectory>${project.build.directory}/coverage-reports/jacoco</outputDirectory>
</configuration>

这将确保在target/coverage-reports/jacoco下生成所有HTML,XML和CSV报告。请注意,启动mvn site时,此配置不会用作Maven站点生成的一部分。在网站生成期间,您需要更改outputDirectorymaven-site-plugin