当前位置: 首页 > 知识库问答 >
问题:

如何从命令行配置JaCoCo maven插件

严昀
2023-03-14

我正在尝试从命令行配置JaCoCo maven插件,而不是使用pom.xml。到目前为止,我已经设法使用命令执行准备代理

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/jaco.exec 文件,现在我正在尝试运行报告阶段,但我无法为此阶段设置属性。我正在运行命令:

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代理中相同。

我有这样的输出:

[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 --

使用默认值。

共有3个答案

东郭臻
2023-03-14

我们使用以下代码:

mvn clean devtestcov:atest -Dactive.devtest -Dmaven.test.failure.ignore=true -Djacoco-agent.destfile=target/jacoco.exec
魏煜祺
2023-03-14

当不能使用此属性时,可以使用环境变量。

当我得到Jacoco Diff Coverage Jacoco:报告包括不能使用属性。

所以我使用 ${inc_files}

外壳:

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>

我希望这将是有用的。

司空和悌
2023-03-14

GitHub 问题 322 已从 0.7.8 版的 jaco-maven 插件开始解决。从此版本开始,您可以使用用户属性 jaco.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属性没有用户属性,因此您将无法这样做。调用时,您正确地覆盖了默认值

mvn -Djacoco.destFile=./coverage/jacoco.exec clean org.jacoco:jacoco-maven-plugin:prepare-agent install

因为 jaco.dest 文件是与准备代理目标的 destFile 属性关联的用户属性的名称。

但是,报告目标的相应数据文件属性没有用户属性。所以你最好的选择是保持默认值。

 类似资料:
  • 问题内容: 是否可以从命令行安装jenkins插件? 我在谷歌搜索后找到了一个命令: 但这不起作用。 问题答案: 根据Jenkins 命令行界面文档,您需要使用 客户端 JAR文件(而不是正在使用的 服务器 WAR文件),您可以直接从Jenkins获得该文件,例如,通过http:// localhost:8080 / cli 然后,您可以使用以下JAR运行命令: 这将下载安装所需的插件及其任何依赖

  • 有没有从命令行安装jenkins插件的选项? 我在谷歌搜索后发现了一个命令: 但它不起作用。

  • 问题内容: 在pom.xml中,我有这样的声明 有什么办法可以从命令行关闭它吗? 我知道我可以将其提取到个人资料中,但这不是我想要的。 问题答案: 可以通过将属性设置为true [ 1 ] 来跳过Javadoc的生成,即 (不是假的)

  • 问题内容: 我有一个配置了执行的插件(antrun),该插件具有一个id,并且未绑定到任何阶段。我可以直接从命令行执行此执行吗? 用以下命令运行它: 或者至少 问题答案: 133 此功能已实现为MNG-5768,并且在Maven 3.3.1中可用。 更改将: 扩展直接插件调用语法,以允许可选的@ execution-id参数,例如org.apache.maven.plugins:maven-rem

  • 问题内容: 我的Maven设置文件 〜/ .m2 / settings.xml中* 默认激活了 一个配置文件。 * 是否可以通过执行以下操作从命令行停用它: 问题答案: 是的,的确,您有正确的方法。从Maven配置文件用户指南 停用个人资料 从Maven 2.0.10开始,可以使用命令行停用一个或多个配置文件,方法是在其标识符前面加上字符’!’。或“-”,如下所示: 这可用于停用标记为active

  • 问题内容: 有没有一种方法可以在没有用户/密码的情况下从命令行重设所有(或只是禁用安全性设置),因为我设法完全将自己锁定在外面? 问题答案: 最简单的解决方案是完全禁用安全-变化给在文件中。 然后只需重新启动詹金斯, 然后转到管理面板并再次设置所有内容。 如果您是从docker在k8s pod中运行Jenkins,这是我的情况,并且无法运行命令,那么您可以通过删除pod来重新启动Jenkins: