具有多模块 Maven 项目的 JaCoCo - 仅记录模块拥有的测试的覆盖率

JaCoCo with multi-module Maven project - Only record coverage by module owned tests

我们有一个包含大约 50 个模块的大型 Maven 项目。今天我们有一个很好的设置,我们可以获得整个项目的组合 JaCoCo 覆盖。我们还将 JaCoCo 生成的最终二进制文件用于自定义覆盖逻辑。

我们想实施更严格的覆盖政策,其中 只有 同一模块中的测试有助于整体覆盖。我们希望每个模块都负责自己的测试和覆盖。

例如。模块 A 依赖于模块 B。A 的代码使用了 B 中的代码。当 A 中的测试为 运行 时,我们 想要覆盖任何 class在B记录。

这个设置可行吗?尝试一下,我发现 JaCoCo 在生成最终报告时有很多过滤选项,但我想在收集覆盖率时在第一步中执行此操作。

最终,我想在每个模块的目标目录中得到一个 JaCoCo exec 文件,该文件只有 classes 从它自己的模块中记录下来。如果我们必须在逐个模块的基础上进行一些配置,比如包含一个显式的包表达式,那就太好了。

Trying around, I find that JaCoCo has many options for filtering when generating the final report, but I'd like to do this in the first step, when the coverage is collected.

还有收集期间过滤的选项 - see includes and excludes options of JaCoCo Java Agent and corresponding options of prepare-agent in jacoco-maven-plugin

Build of JaCoCo itself uses them正是为了这个。