假设,我正在对我的大型项目进行完整构建,该项目有7个模块,而在第6个模块上,由于测试失败,构建失败。有什么方法可以从失败的角度开始构建吗?
答案 0 :(得分:107)
您可以使用-rf
或--resume-from
从第6个模块恢复构建:
<强>
-rf, --resume-from
强>
从指定项目恢复反应堆
有关详细信息,请参阅Advanced Reactor Options。
答案 1 :(得分:10)
以下是示例
mvn clean install -rf :your-module
答案 2 :(得分:9)
您可以使用-rf
命令从任何所需模块恢复构建。
例如,如果您的构建在myproject-proxy中失败,则可以使用以下命令:
mvn -rf myproject-proxy clean install
答案 3 :(得分:8)
查看maven摘要,您将看到已执行的模块以及maven停止的位置。 然后试试这个:
mvn clean install-Dmaven.test.skip=true -rf :yourModule
答案 4 :(得分:2)
根据来自 What's New in Maven 4 的“Maarten Mulders”(2020 年 11 月),随着即将推出的 Maven 4.0.0(2021 年第一季度),您很快就能做到这一点
考虑这个示例项目结构:
<块引用>Reactor 的第一个改进是修复了错误。
以前,如果您的项目构建在客户端模块上失败,您会收到提示以使用 --resume-from :client
恢复构建。但是如果你这样做,构建会再次中断:这次是因为 Maven 找不到公共模块。
您可能认为添加 --also-make
(或 -am
)可以解决这个问题,但事实并非如此。此 long-standing bug 已不存在。
如果您将 --resume-from :client
与 --also-make
结合使用,Reactor 将找到您项目中的所有模块并按照您的要求继续构建。
但您可能不会注意到。 --resume-from :client
的作用是让您思考不必要的问题。
借助 Maven 4,您可以使用 --resume
或简称 -r
让您的生活更加轻松。它将自动从上次失败的模块恢复构建。
但还有更多!也许您正在使用 parallel builds。
一个模块序列成功构建,而另一个模块序列构建失败。
在这种情况下,使用 -r
将跳过先前构建中成功的模块。
这两个功能的结合很可能会缩短您构建大型企业软件项目所需的时间!
答案 5 :(得分:0)
语法:mvn -rf modulename mavengoal 要么 mvn-从模块名称mavengoal删除
例如: mvn -rf管理模块全新安装 要么 mvn-从admin-module干净安装中删除
答案 6 :(得分:-1)
您可以单独运行模块6的构建以查看它是否仍然失败,但是当您想要运行“大”构建时,我担心您需要从头开始构建所有模块。
编辑:当然后续构建会更快,因为模块1-5的代码已经编译,除非你在构建过程中运行clean。