我研究了很多,但仍然没有找到令人满意的解决方案。我有一个多模块maven项目,希望从surefire插件生成的surefire报告中生成一个聚合报告。就其本身而言,一切都在工作,除了我必须运行两次构建过程。
要求只运行一次。有什么想法吗?
project (aggregator and parent POM)
|- module1
|- module2
|- module3
|- moduleX
我知道问题的背景(maven在子项目之前创建根项目的报告,因此聚合在第一次运行时返回空),但几乎所有(1、2、3、4)状态都只是为了重新运行构建过程。(SO上的一些帖子也指向这个方向)唯一有用的帖子是分离聚合器和父pom。然而这只是我的最后手段。如何在一次maven运行中获得聚合报告,还有其他想法吗?
澄清:运行两次构建过程意味着调用
- mvn-clean-install-surefire-report:report(完成后再次调用它)
- mvn clean install surefire报告:报告
或
- mvn清理站点(并在其完成后再次调用它)
- mvn清洁场地
在第一次运行中,聚合报告是空的,因为它是在每个其他项目之前生成的(由于反应堆的构建顺序),所以没有一个子模块具有必要的surefire txt/xml文件。在第二次运行中,由于使用了第一次运行的surefire报告,因此聚合报告生成良好。
以下是我的猜测:
如果你得到
[INFO] Skipped "Surefire Report" report (maven-surefire-report-plugin:2.22.0:report-only), file "surefire-report.html" already exists.
在你的第一次跑步和第二次跑步中,包括重新创建target/site的内容,然后你会得到你描述的效果。
http://bartswennenhuis.nl/maven-aggregate-reports-for-multi-module-projects/
另一方面,准确地描述了你所看到的需要运行两次目标的情况:
mvn verify site
mvn site:site site:stage