对于我的小型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格式获取报告?
答案 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站点生成的一部分。在网站生成期间,您需要更改outputDirectory
的maven-site-plugin
。