maven-mvnd高性能构建插件
1. 简介
mvnd属于maven的子项目,目的是为了提高构建性能,且学习成本很低,可以花极少的时间学习就能大幅提高工作效率。
GitHub:https://github.com/apache/maven-mvnd
2.特性
-
mvnd内嵌了maven(无需另外安装maven,已经安装过maven也不用担心冲突) - 实际的构建是在长期的守护进程中进行
- 一个守护进程可以为多个构建请求提供服务
-
mvnd客户端是基于GraalVM构建,与传统 JVM 相比,它启动速度更快,使用的内存更少。
3.优势
- 用于运行实际构建的
JVM不需要为每个构建重新启动。 - 持有
Maven插件类的类加载器被缓存在多个构建中。因此,插件 jar 只需读取和解析一次。 -
GraalVM的JIT(Just In Time)实时编译特性也被运用到Maven构建作业中。JIT可以大大降低编译时间,在重复构建过程中,JIT优化代码立即可用,也极大提高了构建效率。
4.安装

image
- 下载对应系统的压缩包
- 解压后修改配置文件,修改
conf/mvnd.properties

image
拉到底部修改
settings文件目录,可以指向原安装maven中的xml文件,也可单独放到一个目录中。

image
- 配置环境变量
将
mvnd的bin目录配置到环境变量path中
5. 测试
以多模块复杂项目在Windows构建为例。
默认情况下,mvnd使用多个 CPU 内核并行构建模块,如果该项目不支持并行构建,可以增加-T1参数进行串行构建。
-
maven构建
# 执行maven命令开始构建
mvn clean -U -Dmaven.test.skip=true package
# 最终结果
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 05:14 min
[INFO] Finished at: 2022-01-18T11:28:46+08:00
[INFO] ------------------------------------------------------------------------
-
mvnd构建(并行)
# 执行maven-mvnd命令开始构建
mvnd clean -U -Dmaven.test.skip=true package
# 最终结果
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:45 min (Wall Clock)
[INFO] Finished at: 2022-01-18T11:31:19+08:00
[INFO] ------------------------------------------------------------------------
-
mvnd构建(串行)
# 执行maven-mvnd命令开始构建
mvnd clean -U -Dmaven.test.skip=true package -T1
# 最终结果
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 04:51 min
[INFO] Finished at: 2022-01-18T11:39:17+08:00
[INFO] ------------------------------------------------------------------------
- 参照构建时间,并行方式构建大幅减少。