1)Parallel Builds in Maven:

maven3推出了并行编译的功能,开启后在多核cpu下可以提高构建速度

  • -T,--threads Thread count, for instance 2.0C where C is core multiplied

笔者机器为i5-7500 4核4线程, 因此设置为1C,表示一个核心开启一个线程,如果你的u支持超线程如4核8线程可以设置为2C

开启前耗时

开启后:

Maven 3的性能较之于Maven 2是有了很大的进步的,这体现在内存占用的减少和构建时间的减少 两个方面。特别是Maven 3引入的并行构建特性,能够分析项目模块之间的依赖关系,然后并行地构建那些相互间没有依赖关系的模块,从而充分利用如今普遍的多核CPU资源。
mvn -T 4 clean install
mvn -T 1C clean install

其中
-T 4 是直接指定4线程
-T 1C 表示CPU线程的倍数

就是假设,现在现在1个物理CPU,有4个核心,8个线程。
那么此时-T 1C 就是8线程。

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

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找出目标模块所依赖的模块并进行构建
mvn -T 1C clean package -pl $moduleName -am

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

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不需要那么多信息,并且经过优化的代码实际上有机会在构建之后就开始使用。

5) 内存调优

  •  设置java内存:-Xms800m -Xmx800m -XX:MaxNewSize=512m  -XX:MaxPermSize=512m

    • 如果需要是堆内存不够,则设置最大堆大小-Xmx,如果是持久代溢出,比如出现PermGen space异常,则设置-XX:MaxPermSize即可
    • set MAVEN_OPTS= -Xms800m -Xmx800m -XX:MaxNewSize=512m  -XX:MaxPermSize=512m
export MAVEN_OPTS= -Xms800m -Xmx800m -XX:MaxNewSize=512m  -XX:MaxPermSize=512m

总结:

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

跳过单测编译:

mvn clean package -T 1C -Dmaven.test.skip=true -Dmaven.compile.fork=truemvn clean package -T 1C -Dmaven.test.skip=true -Dmaven.compile.fork=true -pl $moduleName -am --offline

Maven加速编译技巧相关推荐

  1. maven项目包导不进去_IntelliJ Idea下Maven插件使用技巧

    标签:Idea Maven IntelliJ Idea下Maven插件使用技巧,对于开发人员快速上手,并可能有效提高开发效率,特将此整理分享给大家. 1.Idea下载右侧菜单可打开Maven操作面板, ...

  2. 【Unity知识树】Unity编辑器加速小技巧

    Unity编辑器加速小技巧 运行游戏时不重新编译脚本 现象:每次运行游戏都会弹出一个重新加载脚本的框,耽误几秒钟时间. 提速技巧:勾选工程设置 > 编辑器 > Enter Play Mod ...

  3. maven项目编译漏掉src/main/java下的xml配置文件

    在整合Spring + Mybatis框架的时候,自动扫描配置都已经配置好了. 配置如下: <?xml version="1.0" encoding="UTF-8& ...

  4. maven 打包编译_您是否真的想加快Maven的编译/打包速度? 那么takari生命周期插件就是答案。...

    maven 打包编译 像你们中的许多人一样,我正在使用多模块Maven项目 . 与现有的许多系统相比,它不是一个巨大的系统,它具有15个模块,3种不同的耳朵部署,带有属性文件的大量参数化以及大约10万 ...

  5. Maven原型创建技巧

    我最近需要为姜黄SOA项目创建一些Maven原型. 对于不了解的人来说, Maven原型是一种基于一些预先罐装的项目模板生成项目的方法. 对于当前的姜黄SOA原型,它将创建一个多模块Maven项目,该 ...

  6. IDEA解决Maven项目编译后classes文件中没有.xml或.properties问题

    IDEA解决Maven项目编译后classes文件中没有.xml或.properties问题 方式一.在 pom.xml 中添加下面的代码 <build><!--解决Maven项目编 ...

  7. 解决Maven打包(编译)慢的问题

    终于找到Maven打包(编译)慢的原因了,lombok是罪魁祸首 一个独立的Model包,560个实体类,编译要4分钟,而老项目2100多个类,编译才要10多秒 开始以为是Swagger注解的原因,最 ...

  8. 利用pre-compiled headers技术以加速编译速度(一)

    <初见pre-compiled headers技术> 过去我们撰写C/C++程序时,每个档案都必须利用编译器指令 #include 引入许多的系统标头文件才能够使程序顺利编译,接着经由连结 ...

  9. maven项目编译中文乱码和myeclipse中文乱码和电脑乱码?

    maven项目编译中文乱码 中pom.xml中配置 <properties>                <project.build.sourceEncoding>UTF- ...

最新文章

  1. MySQL rpm包 二进制区别_Linux环境下安装mysql5.6(二进制包不是rpm格式)
  2. 如何开展软件架构之需求分析3
  3. 【STM32】SPI简介
  4. UnityEngine.UI.dll 路径
  5. 物理太难?这些虚拟动图,让你看懂物理
  6. 技术分享:从双11看实时数仓Hologres高可用设计与实践
  7. ArchSummit分享 | 高德地图App架构演化与实践
  8. 聊聊2019年的web前端
  9. pycharm是python2.还是3_Pycharm:Python2和3及其的Anaconda的正确设置
  10. Mac上配置Privoxy
  11. Eclipse Paho MQTT客户端Java源码分析
  12. 有关MATLAB归一化处理中,mapminmax的用法详解
  13. 万物皆可Hook!重新捡起Hook神器-Xposed框架
  14. js根据文字获取首字母案例,直接复制在html中即可查看效果
  15. DPI与DFI技术分析
  16. Android系统应用开发
  17. 到底还有没有月薪3万以下的程序员?程序员工资真的这么高?
  18. java编程之拼图_java版拼图
  19. EOS.CYBEX社区满分入围EOS超级节点候选人!
  20. java后台如何将rgb与16进制颜色进行转换

热门文章

  1. 源码编译安装php-7.4.8
  2. 项目8 数据库的安全性维护
  3. 《操作系统真象还原》第二章
  4. vue 改变table某一行的值_elementui 点击table的一行数据,怎么更改这一行的样式?...
  5. 论文发表查重率要小于多少?
  6. 基于单片机的GPS模块
  7. exe crashed。
  8. 2018-8-10-WPF-使用-VisualStudio-2017-项目文件
  9. Spring+Mybatis+BoneCP向数据库发出请求时出现:Io 异常: Socket read timed out
  10. liunx基础—zabbix5.0监控系统安装部署