如何将 Maven 多项目构建中的离线 JaCoCo exec 文件集成到 SonarQube 中

How to integrate offline JaCoCo exec files from Maven multiproject build into SonarQube

我有一个 Maven 多项目构建。单元测试使用 PowerMock 1.6.6,我已经设法使用 "offline" 进程为每个模块生成单独的 Jacoco (0.7.8) exec 文件。我还有一个使用 "report-aggregate" 生成单个 JaCoCo 报告的模块。

我现在正在尝试使用 sonar-scanner 2.8 与 SonarQube 5.6.5 集成。

使用 this doc page 我自然地构建了一个命令行,将 "sonar.jacoco.reportPaths" 属性 设置为每个子模块中 "jacoco.exec" 文件的逗号分隔路径列表。这似乎没有效果。我在输出中看到一条消息,上面写着“INFO: JaCoCoSensor: JaCoCo report not found : <mycurrentdirectory>\target\jacoco.exec”。

因此,我改为将 属性 "sonar.jacoco.reportPath" 设置为相同的逗号分隔值。这至少有影响,但它混淆了扫描仪,因为它显然期望这是一个单一的位置。

然后我尝试将 属性 设置为几个 "jacoco.exec" 文件中的第一个。至少完成了,但覆盖数据很少。

我该如何进行?我是否应该以某种方式使用 Jacoco "merge" 目标将我所有的 jacoco.exec 文件合并到一个文件中,并指定它,或者是否有不同的未记录的 属性 允许列表文件路径数?

我确认广告中的 "sonar.jacoco.reportPaths" 属性 仅适用于 SonarQube 6.2 或更高版本(文档显然已更新以反映这一点)。

因此,我继续实施 "merge",为所有模块指定文件集。为该文件集列表获取正确的数据需要一段时间(Maven 与许多框架一样,当您的配置数据表示不存在的文件或组件时,通常什么也不说)。