gpt4 book ai didi

java - jacoco 合并目标找不到子模块的数据文件

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:04:49 25 4
gpt4 key购买 nike

我有一个大型 Maven 多项目构建,其中包含基于 PowerMock 的单元测试。我在子模块中生成一个“target/jacoco.exec”,在子模块的整个父 pom 中使用插件配置。我有一个额外的子模块,它只使用“report-aggregate”,并将各种子模块指定为依赖项。这一切基本上都有效。

我现在正尝试将这些数据与 SonarQube 集成。似乎安装的 SonarQube Java Analyzer 版本不知道如何处理多个 jacoco.exec 文件,它只会处理一个文件。所以,我正在努力实现“合并”目标。我阅读了有关此目标的文档,但显然我没有正确执行某些操作,因为它只是找不到数据文件。

在我使用“report-aggregate”的同一子模块中,我执行了以下操作:

         <plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.8</version>
<executions>
<execution>
<id>report-aggregate</id>
<phase>verify</phase>
<goals>
<goal>report-aggregate</goal>
</goals>
</execution>
<execution>
<id>merge</id>
<goals>
<goal>merge</goal>
</goals>
<configuration>
<fileSets>
<fileSet>
<directory>../childmodule1/target</directory>
<include>*.exec</include>
</fileSet>
<fileSet>
<directory>../childmodule2/target</directory>
<include>*.exec</include>
</fileSet>
... several more
</fileSets>
</configuration>
</execution>
</executions>
</plugin>

当我从顶层运行“mvn clean install”时,它最终处理了“jacoco-aggregate”子模块,并产生了以下输出:

[INFO] ------------------------------------------------------------------------
[INFO] Building jacoco-aggregate 2.3.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ jacoco-aggregate ---
[INFO] Deleting ...\jacoco-aggregate\target
[INFO]
[INFO] --- jacoco-maven-plugin:0.7.8:merge (merge) @ jacoco-aggregate ---
[INFO] Skipping JaCoCo merge execution due to missing execution data files
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (filter) @ jacoco-aggregate ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory ...\jacoco-aggregate\src\main\resources
[INFO]
[INFO] --- depends-maven-plugin:1.2:generate-depends-file (generate-depends-file) @ jacoco-aggregate ---
[INFO] Created: ...\jacoco-aggregate\target\classes\META-INF\maven\dependencies.properties
[INFO]
[INFO] --- jacoco-maven-plugin:0.7.8:instrument (default-instrument) @ jacoco-aggregate ---
[INFO]
[INFO] --- jacoco-maven-plugin:0.7.8:restore-instrumented-classes (default-restore-instrumented-classes) @ jacoco-aggregate ---
[INFO]
[INFO] --- jacoco-maven-plugin:0.7.8:report (default-report) @ jacoco-aggregate ---
[INFO] Skipping JaCoCo execution due to missing execution data file.
[INFO]
[INFO] --- maven-javadoc-plugin:2.10.4:jar (module-javadoc-jar) @ jacoco-aggregate ---
[INFO] Not executing Javadoc as the project is not a Java classpath-capable package
[INFO]
[INFO] --- jacoco-maven-plugin:0.7.8:report-aggregate (report-aggregate) @ jacoco-aggregate ---
[INFO] Loading execution data file ...\childmodule1\target\jacoco.exec
[INFO] Loading execution data file ...\childmodule2\target\jacoco.exec
... several more
[INFO] Analyzed bundle 'childmodule1' with 1 classes
[INFO] Analyzed bundle 'childmodule2' with 1 classes

如您所见,它执行了“合并”目标,但没有找到任何数据文件,尽管后来的“报告聚合”目标找到了。

所以我假设我指定文件集或与之相关的方式是有问题的。这里可能出了什么问题?

最佳答案

尝试移动 <fileSets> (以及 <destFile/> ,如果有的话)进入 <plugin><configuration>而不是 <execution><configuration> :

<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.8</version>
<configuration>
<fileSets>
<fileSet>
<directory>..</directory>
<include>**/target/*.exec</include>
</fileSet>
</fileSets>
</configuration>
<executions>
<execution>
<goals>
<goal>merge</goal>
</goals>
</execution>
</executions>
</plugin>

关于java - jacoco 合并目标找不到子模块的数据文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41988302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com