如何让maven构建得更快?

时间:2015-09-03 07:01:18

标签: java multithreading scala maven build

我有一个多模块java项目。 Maven需要大约40秒来构建它。我通过指定-T和-Cargs来尝试使用多线程构建的maven,因为没有使用线程和内核。但我没有看到我的构建时间有任何显着改善。
我正在使用maven 3.2.3,有时我需要经常构建我的项目。
我知道干净的目标需要花费很多时间,但我不能忽略它。
建议请....

编辑:
注意:在我的情况下,清洁不会花费太多时间。它在1秒内完成。安装正在休息。

7 个答案:

答案 0 :(得分:24)

注意:首先是AFAIK,除了这里的所有答案之外,maven中没有其他内置选项。

使用多个线程运行maven构建对我来说可以加速构建。 例如:

mvn clean install -T100
  

其中-T用于根据您的要求指定所需的线程数   硬件

Below are the variants from wiki

  

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
  •   

如何评估执行(See Parallel builds in Maven 3)?

enter image description here

图中的每个节点代表多模块构建中的模块,“级别”仅指示内部反应器依赖关系图中与第一个模块的距离。 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)

您可以使用像

这样的小窍门来优化构建
  1. 如果您已经编写了Junit Test,并且每次都可以使用-DskipTests=true
  2. 而不想运行测试用例
  3. 本地安装Nexus或存储库
  4. 您可以将内存配置调整为最佳,例如:将此行添加到mvn.bat设置MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=256m
  5. 有关详细信息,请查看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 (Windows) 的低级速度

我的额外技巧是使用 ramdisk

  1. 创建一个 2GB 的 Ramdisk(例如 D:
  2. 将 IDE、Maven、JDK 和 .m2/repository 安装到该 Ramdisk (D:/m2/)。
  3. 编辑 Maven 的 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)