gpt4 book ai didi

java - 多个 Maven 项目,单个 JaCoCo 站点?

转载 作者:行者123 更新时间:2023-11-28 20:18:09 25 4
gpt4 key购买 nike

我在一家使用多个 Maven 项目/模块来创建最终将成为一个产品的公司工作。为了帮助我解释,想象一个类似于下面的文件结构:

- Parent Directory
- Project_1
- /src/
- /target/
- POM.xml
- Project_2
- /src/
- /target/
- POM.xml

在我们使用 JUnit 对代码进行单元测试的过程中,一项重要的契约(Contract)要求是我们通过测试实现超过一定百分比阈值的代码覆盖率。

我们使用 JaCoCo 以 HTML 网站的形式生成覆盖率报告。 JaCoCo 本身被证明是无价的,但我们遇到的一个主要问题是这会在 /target/site/jacoco/ 目录下创建一个站点。

我自己做了一些调查,发现除非我弄错了,否则默认情况下 JaCoCo 不支持将多个 Maven 项目聚合到一个 JaCoCo 报告中的能力。

所以我的问题是,任何人都可以提出一个替代解决方案 - 可以让我们将多个报告集中到一个网络服务器上的解决方案吗?

我们有一个选择是将所有网站移动到网络服务器上的单独文件夹中,然后有一个索引页面将它们链接在一起,但这充其量是“笨拙”的。例如:

- Web Server
- index.html
- Project_1
- (Generated report files)
- Project_2
- (Generated report files)

如有更好的建议,我们将不胜感激。

最佳答案

截至目前,JaCoCo 并未提供执行此操作的简单方法。但是,他们确实指定了此处描述的三个替代方案:https://github.com/jacoco/jacoco/wiki/MavenMultiModule

他们最合适的方法是创建一个单独的报告模块,其中包含对所有其他模块的依赖项(在 github 文章中称为 Strategy: Module with Dependencies)。

报告器模块使用 jacoco:report-aggregate ( http://www.eclemma.org/jacoco/trunk/doc/report-aggregate-mojo.html ) maven 目标来获取所有单独的报告并将它们绑定(bind)在一起。

一个示例项目:

https://prismoskills.appspot.com/lessons/Maven/Chapter_06_-_Jacoco_report_aggregation.jsp

关于java - 多个 Maven 项目,单个 JaCoCo 站点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42512297/

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