Java 多个Maven项目,一个JaCoCo站点?

Java 多个Maven项目,一个JaCoCo站点?,java,maven,testing,junit,jacoco,Java,Maven,Testing,Junit,Jacoco,我在一家公司工作,该公司使用多个Maven项目/模块来创建最终将成为一个产品的产品。为了帮助我解释,请想象一个类似于以下内容的文件结构: - Parent Directory - Project_1 - /src/ - /target/ - POM.xml - Project_2 - /src/ - /target/ - POM.xml 在使用

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

- Parent Directory
     - Project_1
           - /src/
           - /target/
           - POM.xml
     - Project_2
           - /src/
           - /target/
           - POM.xml
在使用JUnit对代码进行单元测试的过程中,一个重要的合同要求是我们在测试中达到一定百分比的代码覆盖率阈值以上

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

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

所以,我的问题是,有人能提出一个替代解决方案吗?它可以让我们将多个报表聚合到一个web服务器上

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

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

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

JaCoCo目前还没有提供一种简单的方法。但是,它们确实指定了此处描述的三种备选方案:

他们最合适的方法是创建一个单独的reporter模块,其中包含对所有其他模块的依赖关系(在github文章中称为Strategy:module with dependencies)

reporter模块使用jacoco:report aggregate()maven目标获取所有单独的报告,并将它们绑定到一个报告中

一个示例项目:


到目前为止,JaCoCo还没有提供一种简单的方法来实现这一点。但是,它们确实指定了此处描述的三种备选方案:

他们最合适的方法是创建一个单独的reporter模块,其中包含对所有其他模块的依赖关系(在github文章中称为Strategy:module with dependencies)

reporter模块使用jacoco:report aggregate()maven目标获取所有单独的报告,并将它们绑定到一个报告中

一个示例项目:


您可以使用许多不同的方法

首先,你可能需要考虑声纳之类的东西,这样你就可以编译所有的模块,并运行声纳来检查其他物体的覆盖范围。Sonar将获取结果并上传到Sonar服务器(以及数据库和所有内容),以便您能够在UI中看到哪里出了问题

另一种方法是滚动您自己的Maven插件(假设您使用的是Maven)。如果我没有弄错的话,jacoco生成的报告也是XML报告。所以它可以很容易地被解析。因此,我们可以编写一个Maven插件来识别所有这样的报告,解析它们并提供一些统一的视图


另一种方法是在覆盖率未达到某个阈值时导致整个构建失败。我知道,它不会直接回答您的问题,但如果您这样做,您将在某种程度上保证最低水平的覆盖率(可以在项目级别不时增加)。

您可以采用许多不同的方法

首先,你可能需要考虑声纳之类的东西,这样你就可以编译所有的模块,并运行声纳来检查其他物体的覆盖范围。Sonar将获取结果并上传到Sonar服务器(以及数据库和所有内容),以便您能够在UI中看到哪里出了问题

另一种方法是滚动您自己的Maven插件(假设您使用的是Maven)。如果我没有弄错的话,jacoco生成的报告也是XML报告。所以它可以很容易地被解析。因此,我们可以编写一个Maven插件来识别所有这样的报告,解析它们并提供一些统一的视图

另一种方法是在覆盖率未达到某个阈值时导致整个构建失败。我知道,它不会直接回答你的问题,但如果你这样做,你会保证最低的覆盖率(可以在项目级别不时增加)。

可能使用Ant Task()生成比Maven插件更灵活的报告?可能使用Ant Task()用于生成比Maven插件更灵活的报告?