我有一个多模块java项目。 Maven需要大约40秒来构建它。我通过指定-T和-Cargs来尝试使用多线程构建的maven,因为没有使用线程和内核。但我没有看到我的构建时间有任何显着改善。
我正在使用maven 3.2.3,有时我需要经常构建我的项目。
我知道干净的目标需要花费很多时间,但我不能忽略它。
建议请....
编辑:
注意:在我的情况下,清洁不会花费太多时间。它在1秒内完成。安装正在休息。
答案 0 :(得分:24)
使用多个线程运行maven构建对我来说可以加速构建。 例如:
mvn clean install -T100
其中-T用于根据您的要求指定所需的线程数 硬件
Maven 3.x具有执行并行构建的能力。命令 如下:
- mvn -T 4 clean install 4线程构建
- mvn -T 1C每个cpu核心清理安装1个线程
- mvn -T 1.5C clean install 1.5 cpu per cpu core
图中的每个节点代表多模块构建中的模块,“级别”仅指示内部反应器依赖关系图中与第一个模块的距离。 Maven根据多模块构建的声明的模块间依赖关系计算此图。请注意,父maven项目也是一个依赖项,这解释了为什么在大多数项目图上都有一个节点。反应堆外的依赖性不会影响该图。
最后,如果您想跳过测试执行,您也可以使用-DskipTests
。
警告: 您的某些插件可能与多线程构建器不兼容,它可能有效。但它会给出以下警告信息。您可能需要查看多线程支持的插件文档。
[WARNING] *****************************************************************
[WARNING] * Your build is requesting parallel execution, but project *
[WARNING] * contains the following plugin(s) that have goals not marked *
[WARNING] * as @threadSafe to support parallel building. *
[WARNING] * While this /may/ work fine, please look for plugin updates *
[WARNING] * and/or request plugins be made thread-safe. *
[WARNING] * If reporting an issue, report it against the plugin in *
[WARNING] * question, not against maven-core *
[WARNING] *****************************************************************
[WARNING] The following plugins are not marked @threadSafe in test-project:
[WARNING] de.dentrassi.maven:rpm:0.9.2
[WARNING] Enable debug to see more precisely which goals are not marked @threadSafe.
[WARNING] *****************************************************************
答案 1 :(得分:3)
您可以使用像
这样的小窍门来优化构建-DskipTests=true
mvn.bat
设置MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=256m
有关详细信息,请查看How to Speed Your Maven build
答案 2 :(得分:3)
如果使用命令行,您可以检查您的计算机拥有多少核心并使用所有核心,如果您还想跳过测试,则可以添加-DskipTests
例如,我有8个核心处理器:
mvn -T 8C clean install -DskipTests
答案 3 :(得分:2)
如果你像我一样有额外的RAM,你可以做一个hacky方式。而且你不需要SSD。因为它对SSD很敏感,可以做很多读写操作。即使你禁用了一点+(MacOS - 我也不记得Win是否有类似的问题)。但
1)创建RAM驱动器(方式的数量取决于您的操作系统)并将其安装到/ Users / Username / volatile文件夹
2)在MVN_HOME / lib中找到maven-module-builder-X.X.X.jar
3)在JAR中修改文件org / apache / maven / model / pom-4.0.0.xml修改
<建立><目录> /用户/用户名/易失性/ $ {project.groupId} / $ {project.artifactId} / $ {project.version} /目标
4)从现在开始所有项目编辑都将在内存中完成。与SSD相比,它有所不同。
是的,它的hack和一些maven插件可能会停止工作BTW。
答案 4 :(得分:1)
在我的实际项目中:
1 /
mvn clean install
[INFO]总时间:01:05 h
2 /
mvn clean install -DskipTests
[INFO]总时间:18:35分钟
3 /
mvn clean install -Dmaven.test.skip -DskipTests
[INFO]总时间:10:58分钟
4 /
mvn -T 1C clean install -Dmaven.test.skip -DskipTests
[INFO]总时间:04:00分钟
答案 5 :(得分:0)
除了许多人已经提到过的并行运行之外,请尝试使用这些行家选项以加快构建速度 -XX:+ TieredCompilation -XX:TieredStopAtLevel = 1
答案 6 :(得分:0)
我的额外技巧是使用 ramdisk
.m2/repository
安装到该 Ramdisk (D:/m2/
)。D:/maven/conf/settings.xml
以使用该 Ramdisked 存储库 (<localRepository>D:/m2</localRepository>
)在我的机器上我转动了
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 14.954 s (Wall Clock)
[INFO] Finished at: 2021-02-17T13:07:51+01:00
[INFO] Final Memory: 55M/642M
[INFO] ------------------------------------------------------------------------
进入
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.564 s (Wall Clock)
[INFO] Finished at: 2021-02-17T12:57:03+01:00
[INFO] Final Memory: 57M/600M
[INFO] ------------------------------------------------------------------------
两个结果都是高端 (-DskipTests -T 12
)