2

我的 Maven 2 项目由几个子模块组成。它的结构包含 EJB、WAR 和 Jar 子模块。现在我想检测包含所有子模块的打包 EAR。

例子:

Interface Maven Project consists of several modules:
- InterfacePOM --> parent pom
- InterfaceEAR --> EAR module which does not actual code but is the packaging for Domain, EJB and WAR
- InterfaceEJB --> EJB module
- interfaceWAR --> WAR module
- interfaceDomain --> JAR module

使用 Cobertura 时,我可以成功检测所有各种独立模块,但每个模块生成一个 .ser 文件。有没有办法一次检测整个 EAR 文件?这样结果将是我可以使用的单个 .ser 文件?

4

3 回答 3

3

简短回答:(有关更多详细信息,请查看此先前的答案)。您需要像仪表板这样的外部插件(实际上,不要使用它,请参阅我之前的答案)、XRadarSonar来汇总报告。但在这个领域,Sonar 是明显的赢家(这个项目简直就是摇滚),我会毫不犹豫地推荐它。查看他们的公共实例Nemo ,选择任何项目并查看代码覆盖率(例如Apache CXF )的深入了解,以了解它可以做什么。

更新:看来我错过了最初问题的重点,所以我相应地更新了我的答案。基本上,我现在将这个问题理解为“如何用 cobertura 检测耳朵”,这确实是一个完全不同的故事。

不幸的是,虽然cobertura可以检测耳朵、sar、zip、war、jar,但我不认为cobertura-maven-plugin支持这种开箱即用的功能,使用 cobertura 的 ant 可能是更好的选择antrun 插件的任务。请参阅MCOBERTURA-86、此线程和此讨论以获取更多背景信息(以及 antrun 示例)。

TBH,在构建生命周期、打包、报告等方面,您尝试做的事情确实不容易,并且由于缺乏 cobertura 插件的支持,这将是一项艰巨的任务。我真的会三思而后行(投入时间以使整个事情发挥作用与产生的价值)或考虑花时间(了解金钱)获得三叶草许可证(为此提供更好的支持)。

于 2010-01-07T19:47:29.910 回答
3

我现在根据您之前对 Maven 2 的回答实施了一个解决方案。它仍然不是很容易使用,但到目前为止一切正常。实现如下:

1.修改我的父 pom 以在提供特定配置文件时生成 cobertura 检测类。这会生成.ser文件和检测类。

2.instrumented classes是通过maven-resource-plugin复制到/target/classes文件夹的,所以实际打包使用instrumented classes。

3.由于没有模块范围的.ser文件,我使用 Cobertura 提供的命令行解决方案手动组合.ser了 EJB、WAR、JAR 和 ear 文件中的这些文件。coberture-merge.bat/.sh

4.将文件部署.ser到我的 JBoss 容器中,并部署已检测的 EAR。

5.测试后我对合并的文件运行报告.ser,瞧.. 它似乎工作..

我肯定会研究 Clover,因为实施的解决方案有点手动..

于 2010-01-09T12:08:30.397 回答
1

看起来 cobertura-maven-plugin 中没有将单个项目中的 .ser 文件合并到单个报告中的任务。

谷歌搜索出现了这个功能请求和插件的补丁以添加合并任务,但它看起来不像被接受。其中一条评论建议使用仪表板插件来完成同样的事情,您可能会取得一些成功。

于 2010-01-07T19:58:16.940 回答