You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TeamCity中集成多个jacocoReport并避免报告覆盖?

解决TeamCity中多个Jacoco报告被覆盖的问题

你遇到的问题是因为TeamCity默认会用最后一条jacocoReport指令的配置覆盖前面的,要生成两份独立报告,只需给每条jacocoReport指令添加唯一的name属性,TeamCity就会识别为两个不同的覆盖率报告,不会互相覆盖。

修改后的脚本如下:

mvn test -Djacoco.percentage.instruction=0.00
echo "##teamcity[jacocoReport name='模块1覆盖率' dataPath='projectPath/target/coverage-reports/jacoco-unit.exec' includes='com.project.test.*' sources='projectPath/src/main/java' reportDir='projectPath/target/temp/jacocoReport']"
echo "##teamcity[jacocoReport name='模块2覆盖率' dataPath='projectPath2/target/coverage-reports/jacoco-unit.exec' includes='com.project.test2.*' sources='projectPath2/src/main/java' reportDir='projectPath2/target/temp/jacocoReport']"

注意事项:

  • 确保两个reportDir的路径完全独立,避免生成的报告文件互相覆盖
  • name属性的值可自定义,只要两份不同即可,方便在TeamCity构建结果中区分

如果需要生成一份合并的综合覆盖率报告,也可以先合并两个Jacoco的exec文件,再生成单份报告:

mvn test -Djacoco.percentage.instruction=0.00
# 使用Jacoco CLI工具合并exec文件(需提前准备jacoco-cli.jar)
java -jar jacoco-cli.jar merge projectPath/target/coverage-reports/jacoco-unit.exec projectPath2/target/coverage-reports/jacoco-unit.exec --destfile target/merged-jacoco.exec
# 生成合并后的覆盖率报告
echo "##teamcity[jacocoReport name='合并覆盖率' dataPath='target/merged-jacoco.exec' includes='com.project.test.*,com.project.test2.*' sources='projectPath/src/main/java,projectPath2/src/main/java' reportDir='target/temp/merged-jacocoReport']"

内容的提问来源于stack exchange,提问作者NotACat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 05:06:18