作为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

如何提高maven的编译速度相关推荐

  1. 提高vivado的编译速度

    提高vivado的编译速度 如何充分使用自己的电脑硬件资源提高vivado的编译速度 如何读取当前线程数 如何设置当前线程数 如何充分使用自己的电脑硬件资源提高vivado的编译速度 在编译vivad ...

  2. iOS之性能优化·提高App的编译速度

    一.前言 经过多年的开发和迭代,我相信很多的 iOS 项目代码已经达到几十万行甚至上百万行的规模,所使用的 Pod 库的数量可以达到几十个甚至上百个,App Store 安装包也变得越来越大,在这么大 ...

  3. 如何提高 Xcode 的编译速度

    本文总结自 WWDC 2018 building faster in xcode 该 Session 通过一系列的实践来实现 Xcode 的快速编译,共阐述了六个大方面,分别是: 将编译过程并行化 通 ...

  4. Maven学习总结(57)—— 如何提高 Maven 的构建速度?maven-mvnd 又是什么鬼?

    前言 Maven 经常被拿来和 Gradle 做对比,最大的劣势之一就是 Maven 构建慢,Gradle 比 Maven 构建速度快 2 到 10 倍,而如今 Maven 也可以更快了.Apache ...

  5. 如何提高Visual Studio编译速度

    https://www.cnblogs.com/kuangke/p/9621607.html https://docs.microsoft.com/en-us/cpp/build/reference/ ...

  6. 使用预编译头提高编译速度

    什么是预编译头 在介绍预编译头之前,有必要了解一下C/C++的编译方式.C/C++的编译单元是源文件(带有.c..cc..cpp等扩展名的文件),在编译一个源文件之前,预处理器会把这个源文件中所有通过 ...

  7. 提高vivado编译速度

    1.当RTL代码修改较少时,使用增量编译功能可以提高工程的编译速度. 2.在控制台输入命令:set_param general.maxThreads 4,使用4个线程对工程进行编译.vivado默认是 ...

  8. 如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度

    1.前言 使用英飞凌单片机编译器 TASKING TriCore Eclipse IDE 开发编译时,想必感受最深刻的就是编译速度,那是非常慢了,如果是部分修改的源文件编译还好,不用等太久,而如果选择 ...

  9. 加快linux编译速度,Linux Makefile 编译速度的优化【转】

    前言 如何提高 Makefile 的编译速度呢?既然是提高,那肯定是对于大项目而言,因为小项目本身源文件不多,Makefile 优化与否,对于编译速度而言,影响并不大.当然对于那些追求速度达到极致的人 ...

  10. 关于vue 动态引入(异步加载import和require)组件的方法和坑(按需懒加载组件,动态生成路由)babel-plugin-dynamic-import-node 优化编译速度

    前言: 最近在改造vue-cli 2.x + webpack2.x的项目时,由于之前路由是静态的,没有根据菜单权限动态生成前端路由.所以想对此进行改造,然后碰到了一些问题和坑,现在总结一下,避免以后继 ...

最新文章

  1. oracle闪回 分区,Oracle 闪回区(Oracle Flash recovery area)
  2. python增删改查人名管理_python3字典列表的增删改查(名片管理系统函数版)
  3. [Step By Step]如何在SAP Business Object Data Services中连接到SAP HANA 数据库
  4. Python 数据分析包:pandas 基础
  5. 两个vlan之间如何通信_如何桥接两个不同的VLAN?
  6. 关于spring 获取不到网站上的xsd的处理记录
  7. 动态网站Web开发用什么语言好?PHP、ASP还是ASP.NET
  8. sqlite字符串连接(追加写入)
  9. imx8mm yocto_bsp 编译
  10. 第 3 章 MCS-51 单片机指令系统
  11. Filter过滤器及其作用
  12. Heka的一些计算过程数据存放目录
  13. firefox火狐同步windows和linux书签
  14. 《JAVA语言程序设计》期末考试试题及答案
  15. 故意伤害罪具体会有什么处罚
  16. 新安装Win7 Windows Update 错误 代码80072EE2 80072EFE
  17. 计算机英语词汇音频,[听单词] 计算机专业英语词汇音频84,计算机英语单词MP3
  18. fckeditor文档库
  19. EC11旋转编码器电路和程序
  20. python爬取北京租房信息

热门文章

  1. 新浪云SAE共享型数据库MySQL使用经验
  2. 如何将一个div水平垂直居中?6种方法做推荐
  3. [蓝桥杯]打水问题、夺宝奇兵、调手表(c++详解)
  4. c语言厘米换算分米程序设计,厘米和分米换算(米和厘米换算)
  5. calibre的使用技巧
  6. 计算机组成第六章作业,计算机组成原理第六章作业_计算机的运算方法1
  7. 2022上半年朋友圈都在传的10本书,找到了
  8. 立创开源|太阳能逐日系统
  9. oracle重建表导致同义词失效,一次对dual表的恢复操作(ORA-00980:同义词转换不再有效错误解决方法)...
  10. Matlab绘图模板