如何提高maven的编译速度

作为java开发都有这样的体会:打包一个项目需要等很久。今天我们就研究一下如何提升mvn的编译速度。

1)Parallel Builds in Maven:

默认Maven不使用硬件的全部功能,它顺序地构建所有模块。通常,可以命令Maven分析您的项目(包括依赖关系图),并在可能的情况下并行构建项目。可以指定用于构建项目的确切线程数,也可以使用参数的可移植版本,并根据计算机上可用的CPU来指定线程数。

  • mvn -T 4 install -- will use 4 threads
  • mvn -T 1C install -- will use 1 thread per available CPU core

尽管您的项目可能难以并行构建,但值得尝试。每个CPU内核使用一个线程是一个很好的默认设置。您的开发机器可能具有备用的计算能力,加快构建过程始终很有用。

2)Build Necessary Modules Only:

假设有一个多模块项目,该项目包含很少更改的通用核心模块,以及当前正在使用的网络界面。更改Web界面模块后,请尝试运行如下命令:mvn install -pl $moduleName -am

  • -pl - makes Maven build only specified modules and not the whole project.
  • -am - 使Maven找出目标模块所依赖的模块并进行构建

一起使用这些选项的结果是灵活性和速度的完美结合。我们知道我们通常在使用哪个模块,并且如果我们更改了任何依赖关系,它们也会被更新。同时,您的项目构建中的很大一部分将被跳过,要么是因为它仍然是最新的并且不需要重建,要么是因为它不是目标模块的一部分,并且不会发挥作用。

3)限制上网:

所有构建系统(npm,gradle和sbt)都会联网下载一些内容。可以启用一个简单的选项,使Maven脱机工作。启用脱机模式后,Maven在解决依赖关系时将不会连接到任何远程存储库。本地存储库中的所有jar文件仍将可用,因此不会破坏您通常的工作流程。因此,只需在您的mvn命令后加上--offline,Maven就不会试图检查您最喜欢的依赖项的新快照,也不会让您等待网络响应。

如果您不希望它脱机,但拥有不可靠的网络连接,则可以尝试设置:-DdependencyLocationsEnabled = false为MAVEN_OPTS变量。这种增加意味着Maven将在整个构建过程中保留较少的传出连接,并且可能还会缩短构建过程的几秒钟。

4)提高java启动速度:

Maven是一个Java程序,可以调整使JVM的启动速度更快(考虑到我们不会处理长时间运行的应用程序服务器进程,为了确保以后的更快执行速度,这是安全的,我们可以为您推荐以下两个选项)

-XX:+TieredCompilation -XX:TieredStopAtLevel=1

我们只是让您的JVM仅执行代码的基本即时编译。它不会尝试收集更精确的配置文件并更好地优化代码的执行。这样做的好处是,JIT不需要那么多信息,并且经过优化的代码实际上有机会在构建之后就开始使用。请注意,该建议仅是理论上的建议,如果您可以尝试并提出您的项目是否能从中受益,我将非常高兴。

总结:

MAVEN_OPTS= -XX:+TieredCompilation -XX:TieredStopAtLevel=1
mvn -T 1C install -pl $moduleName -am --offline

它将剥夺Maven烦人的下载互联网的权利,仅构建必要的模块及其依赖项,同时将JVM调整为运行速度更快,运行时间更短的程序,并且不会无休止地清理整个项目。

参考:https://www.jrebel.com/blog/how-to-speed-up-your-maven-build

猜你喜欢

转载自blog.csdn.net/liuxiao723846/article/details/111991698