maven-mvnd高性能构建插件

maven-mvnd高性能构建插件

1. 简介

mvnd属于maven的子项目,目的是为了提高构建性能,且学习成本很低,可以花极少的时间学习就能大幅提高工作效率。
GitHub:https://github.com/apache/maven-mvnd

2.特性

  1. mvnd内嵌了maven(无需另外安装maven,已经安装过maven也不用担心冲突)
  2. 实际的构建是在长期的守护进程中进行
  3. 一个守护进程可以为多个构建请求提供服务
  4. mvnd客户端是基于GraalVM构建,与传统 JVM 相比,它启动速度更快,使用的内存更少。

3.优势

  1. 用于运行实际构建的 JVM 不需要为每个构建重新启动。
  2. 持有 Maven 插件类的类加载器被缓存在多个构建中。因此,插件 jar 只需读取和解析一次。
  3. GraalVMJIT(Just In Time)实时编译特性也被运用到Maven构建作业中。JIT可以大大降低编译时间,在重复构建过程中,JIT优化代码立即可用,也极大提高了构建效率。

4.安装

https://github.com/apache/maven-mvnd/releases

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

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

image
  1. 配置环境变量

mvndbin目录配置到环境变量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] ------------------------------------------------------------------------
  • 参照构建时间,并行方式构建大幅减少。

你可能感兴趣的:(maven-mvnd高性能构建插件)