我试图从命令行使用pom.xml
配置JaCoCo maven插件。到目前为止,我已使用命令
prepare-agent
mvn -X -Djacoco.destFile=./coverage/jacoco.exec clean org.jacoco:jacoco-maven-plugin:prepare-agent install
带输出:
[DEBUG] Configuring mojo org.jacoco:jacoco-maven-plugin:0.7.6.201602180812:prepare-agent from plugin realm ClassRealm[plugin>org.jacoco:jacoco-maven-plugin:0.7.6.201602180812, parent: sun.misc.Launcher$AppClassLoader@70dea4e]
[DEBUG] Configuring mojo 'org.jacoco:jacoco-maven-plugin:0.7.6.201602180812:prepare-agent' with basic configurator -->
[DEBUG] (f) destFile = /src/coverage/jacoco.exec
...
创建./coverage/jacoco.exec
文件,现在我尝试运行report
阶段,但我无法为此阶段设置属性。我正在运行命令:
mvn -X -Djacoco.dataFile=./coverage/jacoco.exec -Djacoco.outputDirectory=./jacoco_ut org.jacoco:jacoco-maven-plugin:report
或
mvn -X -DdataFile=./coverage/jacoco.exec -DoutputDirectory=./jacoco_ut org.jacoco:jacoco-maven-plugin:report
与jacoco:report中一样,jacoco:prepare-agent中没有user property
。
我的输出如下:
[DEBUG] Configuring mojo 'org.jacoco:jacoco-maven-plugin:0.7.6.201602180812:report' with basic configurator -->
[DEBUG] (f) dataFile = /src/target/jacoco.exec
[DEBUG] (f) outputDirectory = /src/target/site/jacoco
[DEBUG] (f) outputEncoding = UTF-8
[DEBUG] (f) project = MavenProject: project:3.2.0-SNAPSHOT @ /src/pom.xml
[DEBUG] (f) skip = false
[DEBUG] (f) sourceEncoding = UTF-8
[DEBUG] -- end configuration --
使用默认值。
答案 0 :(得分:3)
从jacoco-maven-plugin
的{{3}}起,GitHub issue 322已得到解决。从此版本开始,您可以使用用户属性jacoco.dataFile
,因此问题中的命令可以按原样运行。
要在命令行强制使用该版本,您应该:
mvn -Djacoco.destFile=./coverage/jacoco.exec clean org.jacoco:jacoco-maven-plugin:0.7.8:prepare-agent install
您还可以在POM中配置jacoco-maven-plugin
并明确指定此版本。
在0.7.8版之前,dataFile
属性没有version 0.7.8,因此您无法做到这一点。在调用
mvn -Djacoco.destFile=./coverage/jacoco.exec clean org.jacoco:jacoco-maven-plugin:prepare-agent install
因为user property是与destFile
目标的prepare-agent
属性相关联的用户属性的名称。
但是,report
目标的相应jacoco.destFile
属性没有用户属性。所以你最好的选择是保持默认值。
答案 1 :(得分:0)
当您不能使用属性时,可以使用环境变量。
当我获得Jacoco Diff Coverage时,jacoco:report includes无法使用属性。
所以我使用$ {inc_files}
Shell:
echo "+++git diff+++"
inc_files=`git diff --name-only master | grep -oP 'com/languoguang/xxclouds/quark.*.java' | xargs | sed 's/.java/.class/g' | xargs | sed -e 's/ /,/g'`;
echo ${inc_files};
echo "---git diff---";
echo "+++maven test jacoco+++";
mvn -B -f pom.xml -Dinc_files=${inc_files} clean test -Dmaven.test.failure.ignore=true;
echo "---maven test jacoco---";
pom.xml:
<execution>
<configuration>
<title>quark-frameworks-coverage-inc</title>
<outputDirectory>${project.reporting.outputDirectory}/jacoco-aggregate/jacoco-aggregate-inc/</outputDirectory>
<includes>${inc_files}</includes>
</configuration>
<id>report-aggregate-inc</id>
<phase>test</phase>
<goals>
<goal>report-aggregate</goal>
</goals>
</execution>
我希望这会有用。
答案 2 :(得分:0)
我们使用以下代码:
mvn clean devtestcov:atest -Dactive.devtest -Dmaven.test.failure.ignore=true -Djacoco-agent.destfile=target/jacoco.exec