吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2089|回复: 10
收起左侧

[其他转载] 【工具系列】mvnd:maven全新构建插件,提高性能

[复制链接]
mobaijun 发表于 2021-12-31 09:23

前言:

早上打包项目的时候发现打包速度很慢,耗时颇久,就在一个群里求助,如何使maven打包效率加快,一个群友发来一个链接,如图。

image-20211229104002570

Google后发现这个工具居然是apache maven团队出品,并且是maven的一个子项目,所以使用maven可以无缝切换到mvnd

Mvnd 简介

maven-mvndApache Maven团队借鉴了GradleTakari后衍生出的更快的构建工具。mvnd内嵌了Maven,也正是因为这个原因我们可以无缝地将Maven切换为mvnd(也不需要单独安装Maven)。

在设计上,在mvnd中会生成一个或多个的守护进程来服务构建请求以此来达到并行构建的效果。另外在VM的选择上,mvnd使用了GraalVM来代替传统的JVM,与之相比GraalVM启动速度更快,占用的内存更少。

根据文档描述,与传统的Maven相比mvnd具有以下优势:

  • 运行构建的JVM不需要为每个构建重新启动。
  • Maven插件类的类加载器缓存在多个构建中,插件jars只会被读取和解析一次。
  • JVMJIT生成的本机代码会被保留。与Maven相比,JIT编译花费的时间更少。在重复构建期间,JIT优化的代码立即可用。这不仅适用于来自Maven插件和Maven内核的代码,也适用于来自JDK本身的所有代码。

默认情况下,mvnd使用多个CPU内核并行构建模块。使用的内核数由公式Math.max(Runtime.getRuntime().availableProcessors() - 1, 1)给出。 如果您的源代码树不支持并行构建,请在命令行上传递-T1以使您的构建串行。

  • 同时官方给出了24核机器上运行的动态图:

Github地址:传送门

安装

最新版本是0.7.1;

image-20211229104534694

  • 下载完成后解压即安装
  • 修改配置文件

image-20211229104809162

在解压后根目录的conf文件夹下找到mvnd.properties配置文件,配置maven.settings属性值为maven配置文件settings.xml的文件路径。注意:此settings.xml文件存放位置不受限制。

image-20211229110738282

  • 配置环境变量

image-20211229105042738

复制bin目录路径,打开系统设置,最新版本win10 在系统/关于/高级系统设置/环境变量(N)...下配置系统环境变量image-20211229105513882

确认返回即可。

测试

  • 查看环境变量是否配置成功
D:\>mvnd -version
mvnd native client 0.7.1-windows-amd64 (97c587c11383a67b5bd0ff8388bd94c694b91c1e)
Terminal: org.jline.terminal.impl.jansi.win.JansiWinSysTerminal
[WARN]
[WARN] Some problems were encountered while building the effective settings
[WARN] Unrecognised tag: 'url' (position: START_TAG seen ...<!-- \u914d\u7f6e JDK \u7248\u672c -->\r\n        <url>... @307:14)  @ D:\APP\apache-maven-3.8.2\conf\settings.xml, line 307, column 14
[WARN]
Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
Maven home: D:\APP\mvnd-0.7.1-windows-amd64\mvn
Java version: 1.8.0_281, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_281\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
  • 查看帮助
$ mvnd --help
  • mvn 打包测试
# mvn 打包命令
mvn clean package -Dmaven.test.skip=true

# 执行结果
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  8.405 s
[INFO] Finished at: 2021-12-29T11:18:05+08:00
[INFO] ------------------------------------------------------------------------
  • mvnd 打包测试
# 执行打包命令
mvnd clean package -Dmaven.test.skip=true

# 执行结果
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.278 s (Wall Clock)
[INFO] Finished at: 2021-12-29T11:19:40+08:00
[INFO] ------------------------------------------------------------------------

差距很大,俺很惊喜😁😁😁。如果你有更加不错的方案,可以在下方留言区讨论,共同学习进步。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zzcg150 发表于 2021-12-31 09:42

感谢楼主无私分享,万分感谢~~~
pikachu888 发表于 2021-12-31 09:46
感谢楼主分享~~~~

话说这个github里面就是apache的账号下的maven-mvnd地址,楼主还专门Google,  发现是apache团队出品的
 楼主| mobaijun 发表于 2021-12-31 09:46
pikachu888 发表于 2021-12-31 09:46
感谢楼主分享~~~~

话说这个github里面就是apache的账号下的maven-mvnd地址,楼主还专门Google,  发现是ap ...

因为最开始没有仔细看
不知道改成啥 发表于 2021-12-31 10:06
MK下会用到的
weliong 发表于 2021-12-31 10:07
受教了。。
simmtech 发表于 2021-12-31 10:18
学习了,感谢楼主无私分享,万分感谢~
jqlxrgs 发表于 2021-12-31 10:58
特别要谢谢楼主的辛苦分享。
dokuro 发表于 2021-12-31 11:00
学习了,看看有没有实践的机会
剑来…… 发表于 2021-12-31 13:34
感谢楼主,期待楼主多出开发这方面的文章,真实用啊。可惜没币了,明天给你补
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 10:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表