我们可以从失败的地方开始构建Maven吗?


89

假设我正在对具有7个模块的大型项目进行完整构建,而在第6个模块上,由于测试失败,构建失败。有什么方法可以从失败之处开始构建?

Answers:


134

您可以使用-rf或从第6个模块恢复构建--resume-from

-rf, --resume-from
          从指定项目恢复反应堆

有关详细信息,请参见高级反应堆选项


谢谢你。我会试一试
Shekhar,2010年

1
这很好,对于子项目仅用subproject/subsubproject作参数
akostadinov 2014年

13
例如:maven -rf <module name> clean install
佐尔坦

9
仅当我在模块名称前加冒号(例如)时,这才对我有用mvn -rf :moduleName install。(不确定到底为什么需要冒号,但至少在我的设置中似乎如此。)
史蒂夫·钱伯斯

3
看起来这仅在您的初始构建中有install目标的情况下才有效,因为恢复构建可以从本地Maven存储库中获取已构建的工件来解决对它们的依赖关系。我发现运行install构建是一种不好的做法,因为最终会导致快照使本地存储库混乱,并且最终可能会依赖于比预期更旧的快照。看起来像只有您package而不拥有的构建install,使用-rf不是一种选择:您必须完成整个构建。
弗朗斯

13

这是例子

mvn clean install -rf :your-module

9

您可以使用-rf命令从所需的任何模块恢复构建。例如,如果在myproject-proxy中构建失败,则可以使用以下命令:

mvn -rf myproject-proxy clean install

我需要放一个冒号使它起作用,例如-rf:yourModule参见其他答案。
Gapmeister66 '19

8

查看Maven摘要,您将看到执行的模块以及Maven在何处停止。然后试试这个:

mvn clean install-Dmaven.test.skip=true -rf :yourModule

-1

语法:mvn -rf modulename mavengoal或mvn --resume-from modulename mavengoal

例如:mvn -rf管理模块全新安装或mvn --resume-from管理模块全新安装


-rf不是的缩写--remove-from。它的缩写--resume-from
吉利

-2

您可以分别运行模块6的构建以查看其是否仍然失败,但是,当您要运行“大”构建时,恐怕您需要从头开始构建所有模块。

编辑:当然,后续的构建会更快,因为模块1-5的代码已经编译,除非您在构建过程中干净运行。


是的..我知道这个。但我一直在寻找一种方式来开始从先前失败的地方构建..
谢卡尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.