maven-mvnd 让打包更快
前言
众所周知,Maven
和 Gradle
几乎包含了所有Java项目的构建。而目前绝大部分的 Java 项目都是使用 Maven 的方式,Maven 对比 Gradle 的 劣势很明显
,就是太慢了
!
相信作为 Java
开发者的你早已经受够了 maven
的编译缓慢,但是又由于历史包袱、使用习惯等问题暂时切换不了其他更快的构建工具。但是现在,Maven 也可以变得更快了!
这里将给你介绍一款更快的 maven
—— maven-mvnd
。
介绍
maven-mvnd
是 Apache Maven
团队借鉴了 Gradle
和 Takari
后衍生出的更快的构建工具。mvnd
内嵌了 Maven
,也正是因为这个原因我们可以无缝地将 Maven
切换为 mvnd
(也不需要单独安装 Maven
)。
在设计上,在 mvnd
中会生成一个或多个的守护进程来服务构建请求以此来达到并行构建的效果。另外在 VM
的选择上,mvnd
使用了 GraalVM
来代替传统的 JVM
,与之相比 GraalVM
启动速度更快,占用的内存更少。
根据文档描述,与传统的 Maven
相比 mvnd
具有以下优势:
- 运行构建的
JVM
不需要为每个构建重新启动。 Maven
插件类的类加载器缓存在多个构建中,插件jars
只会被读取和解析一次。JVM
中JIT
生成的本机代码会被保留。与Maven
相比,JIT
编译花费的时间更少。在重复构建期间,JIT
优化的代码立即可用。这不仅适用于来自Maven
插件和Maven
内核的代码,也适用于来自JDK
本身的所有代码。
默认情况下,
mvnd
使用多个CPU
内核并行构建模块。使用的内核数由公式Math.max(Runtime.getRuntime().availableProcessors() - 1, 1)
给出。 如果您的源代码树不支持并行构建,请在命令行上传递-T1
以使您的构建串行。
同时官方给出了 24
核机器上运行的动态图:
安装
对于 mvnd 的安装,官方文档给了十分详细的教程,建议先行阅读:手动安装
下载
从 GitHub 下载压缩包,选择 windows 版本(maven-mvnd-<最新版本>-windows-amd64.zip
)如:maven-mvnd-0.8.0-windows-amd64.zip
配置
-
把下载的压缩包解压后,配置 其中
bin
目录地址到系统path
环境变量中;-
添加变量名
MVND_HOME
,变量值为maven-mvnd
解压安装位置。 -
添加
path
配置
-
-
配置环境变量是为了在
cmd
的任意地址,可以识别到bin
下的mvnd
命令; -
配置完成,输入
mvnd -version
查看版本信息;mvnd -version C:\WINDOWS\system32>mvnd -version mvnd native client 0.7.1-windows-amd64 (97c587c11383a67b5bd0ff8388bd94c694b91c1e) Terminal: org.jline.terminal.impl.jansi.win.JansiWinSysTerminal Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739) Maven home: D:\Code\mvnd-0.7.1-windows-amd64\mvn Java version: 1.8.0_102, vendor: Oracle Corporation, runtime: D:\JAVA\jdk\jre Default locale: zh_CN, platform encoding: GBK OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
使用
配置
可以修改 %MVND_HOME%/conf
下的 mvnd.properties
配置文件,拉到最后面,放开 maven.setting
注释,把值改成自己的 maven配置 ( settings.xml
)。或者,您可以设置 java.home
属性,以防使用不是您想要的 JAVA_HOME
环境变量来运行。
举例:
mvnd.properties
mvnd配置文件路径:D:\mvnd-0.8.0\conf\mvnd.propertiessettings.xml
maven 配置文件路径:D:\mvnd-0.8.0\mvn\conf\settings.xml
命令
在使用上与 Maven
的用法几乎没有任何不同,只需将命令 mvn
改为 mvnd
即可。也可以通过查看 mvnd -help
查看使用方法。
举个例子,如要打包安装:
# maven 方式
mvn clean install
# mvnd 方式
mvnd clean install
在本机的实测中,与传统的 Maven
相比,通过 mvnd
的构建所耗费的时间是原来的 1/2
。
IntelliJ IDEA 配置
- 需要安装
Maven Helper
插件- 打包时配置跳过测试
-Dmaven.test.skip=true
- 若
Terminal
显示未找到mvnd
命令,请尝试重启 IntelliJ IDEA 或 电脑。
-
Maven Helper 配置
-
将 Terminal 配置为 cmder
下载地址 cmder(GitHub),并在 高级系统设置 -> 环境变量 配置 2 个参数:
CMDER_HOME=E:\Program Files\cmder
、path=省略其他配置...;E:\Program Files\cmder;
。# 若要将 cmder 添加到右键菜单,在 运行命令窗口 中执行如下脚本 Cmder.exe /REGISTER ALL
真诚点赞 诚不我欺~