Maven:如何进行并行构建?


Answers:


228

Maven 3(从beta 1开始)现在支持并行构建作为实验功能。

例如,

mvn -T 4 clean install # Builds with 4 threads
mvn -T 1C clean install # 1 thread per cpu core
mvn -T 1.5C clean install # 1.5 thread per cpu core

完整的文档可以在Maven Wiki上找到。

https://cwiki.apache.org/confluence/display/MAVEN/Parallel+builds+in+Maven+3


5
什么是1.5线是什么意思?如果我有单核系统,那是否意味着1个线程,而双核系统则导致3个线程?
2014年

4
@SaadMalik是的,没错,3个线程上双核,在四核系统等6个线程
t0r0X

我们可以为JVM使用一个参数,以便在eclipse中使用它吗?
杰森·亨特利

Eclipse支持不从外部调用Maven。
托尔比约恩Ravn的安徒生

18

建议的解决方案很棒,但是我想在这里为并行构建期间测试稳定性添加一些答案。

因此,当使用Maven并行构建时:

mvn -T 4 clean install # Builds with 4 threads
mvn -T 1C clean install # 1 thread per cpu core
mvn -T 1.5C clean install # 1.5 thread per cpu core

测试中可能会出现一些问题。注意测试中的任何行为,在串行和并行测试执行之间是不同的。在大多数情况下,这样做都会对资源隔离测试造成不当的影响

例如,test1用键12345操作数据库条目,该键是硬编码的,而test2使用相同的条目!不好

首先应该考虑这种情况,但有时会忘记这种情况,一旦转换为并行Maven构建,可能会导致不同的问题。

万一发生这种情况,并且您仍然希望至少在某些情况下使用并行执行,您可以(当然,除了尝试修复测试并使它们正确隔离之外)可以使用-DskipTests参数禁用Maven测试运行

mvn clean install -T 4 -DskipTests


12

一些CI构建应用程序(例如hudson)可以同时(甚至在多台机器上)构建多个maven项目。

在maven'standalone'中对此的支持也很好,快速浏览一下maven问题跟踪程序可以给我:http : //jira.codehaus.org/browse/MNG-3004


我认为同时针对多个Maven项目的Hudson功能已损坏,如MNG-3004 JIRA注释中所示。
Dougnukem

2

如果您遇到这个问题想要整理您的构建服务器,而您没有使用本机处理Maven的本地服务器,那么您正在寻找的魔术标志是:

-Dmaven.repo.local=someNoneGlobalDir

对您的每个构建都执行此操作,您可以让它们同时运行所有构建,而不是让所有使用maven的事物排在队列中!

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.