maven并行编译

maven并行编译

Java开发人员大部分普遍用过maven
maven作为项目管理工具
帮助我们管理依赖与构建项目
常见命令就是

# 打包
mvn clean package
# 安装到仓库
mvn clean install

但随着项目或者模块的越来越多
打包速度越来越慢
这个时候自然而然想有没有提高打包速度的方式
因为看过gradle的文章,知道gradle编译是有多线程的
那么maven编译有没有呢
查找资料后有2种

  • maven3原生命令
  • mvnd

maven3

官方参考资料

# 直接上命令
# 4线程构建
mvn -T 4 clean install 
# 每个cpu核心1个线程,比如我是4核cpu那么就4个线程
mvn -T 1C clean install 
# 每个cpu核心1.5个线程
mvn -T 1.5C clean install 

在并行编译模式下会分析我们项目的依赖图并调度可以并行执行的模块从而加速构建
官方文档说了虽然这个新特性经过了大量测试,但仍然建议我们项目内部需要自己慢慢实践
并且可能有部分插件不是线程安全的,这个会通过@threadSafe提示

maven3中并行执行的过程,是一层一层执行的,比如第一层先并行执行完5个模块,再并行执行完第二层的3个模块
耗时取决于编译时间最长的那个模块,所以如果多的小模块收益会更大

mvnd

说到mvnd就不得不提一下gradle
gradle的编译快是基于C/S架构
启动gradle的时候会在后台启动一个server端
gradle默认支持多线程处理
服务端可以重用之前的输入和输出,在增量编译上速度非常快
mvnd指在提供类似于gradle和Takari的更快的maven构建方式

mvnd采用了takari smart builder,比原先maven的并行更快一些
图片来源

安装mvnd

github下载安装包
也可以用Scoop等包管理工具
Windows手动下载二进制文件情况下
需要配置一下环境变量
修改maven仓库地址为自己的(如果需要的话

# MVND_HOME/conf/mvnd.properties
# 拉到最下面修改maven.settings
maven.settings=xxx\\apache-maven-3.5.0\\conf\\settings.xml

使用

使用命令和mvn一样
只是把mvn换成mvnd即可

mvnd clean package

mvn vs mvnd

在选择原生maven或者mvnd上
我个人觉得maven3提供的并行构建也够用了
大约提升了50%的构建速度
当然花点心思用上mvnd也可以
也没啥成本
考虑实际情况旧项目迁移到gradle基本不太可能
现在同事也不用gradle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ikarosxx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值