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] ------------------------------------------------------------------------
  • 参照构建时间,并行方式构建大幅减少。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容