Maven常常被拿来和Gradle做比照,最大的劣势之一就是Maven构建慢,Gradle比Maven构建速度快2到10倍,而现在Maven也能够更快了。Apache Maven团队从Gradle和Takari(Maven生命周期优化器)中取得灵感对Maven进行了强化,衍生出 maven-mvnd我的项目,明天胖哥带你来尝尝鲜。
https://zhuanlan.zhihu.com/p/...
https://zhuanlan.zhihu.com/p/...
https://zhuanlan.zhihu.com/p/...
https://zhuanlan.zhihu.com/p/...
https://zhuanlan.zhihu.com/p/...
https://zhuanlan.zhihu.com/p/...
简略介绍
mvnd并不是对Maven进行了重构,而是内置了Maven。它实际上是一个或者多个Maven守护过程,用来执行理论的构建服务。一个守护过程实例能够为来自mvnd客户端的多个间断申请提供Maven构建服务。当没有闲暇的守护过程时来撑持构建申请时,mvnd能够并行生成多个守护程序。
应用GraalVM代替JVM
mvnd之所以快是因为它应用了GraalVM代替了传统的JVM,因而它启动更快,占用内存更少,而且在履行构建时不须要为每个构建启动新的JVM。另外Maven插件在构建时不再须要屡次加载,而是缓存在多个构建中。SNAPSHOT版本的Maven插件不会被缓存。
反对JIT
GraalVM的JIT(Just In Time)实时编译个性也被使用到Maven构建作业中。JIT能够大大降低编译工夫,在反复构建过程中,JIT优化代码立刻可用,也极大进步了构建效率。
并行构建
目前Maven 3的并行构建(parallel builds)还是试验个性,而且要求应用的插件必须是线程平安的。而mvnd默认就反对应用多个CPU内核进行并行构建。当然如果你的源代码不反对并行构建,也能够通过增加- T1 参数切换到串行构建。
简略尝试
接下来简略尝试一下mvnd。
装置
目前mvnd曾经反对Linux、MacOS、Windows平台。你能够别离通过SDKMAN、Homebrew、Chocolatey这些包管理器进行装置。也能够间接去mvnd发行版仓库下载对应的二进制进行装置。这里以Windows为例,我抉择Chocolatey装置:
choco install mvndaemon
复制代码
工夫可能比拟长一些。
配置
配置很简略,只须要留神两点

如果不应用包管理器进行装置的话请确保mvnd的bin目录关联到PATH。
如果没有配置或者不想配置JAVA_HOME环境变量的话请在~/.m2/mvnd.properties中设置java.home以指定Java目录,例如:java.home=C:\AdoptOpenJDK\jdk-8。曾经配置环境变量的请疏忽该条。

其它的配置项可参考mvnd配置。
应用
装置配置结束后命令行执行mvnd --version呈现下列后果就示意装置胜利了。
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: C:\Program Files\mvndaemon\mvnd-0.7.1-windows-amd64\mvn
Java version: 1.8.0_282, vendor: AdoptOpenJDK, runtime: C:\Program Files\AdoptOpenJDK\jdk-8.0.282.8-hotspot\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
复制代码
为了升高学习老本mvnd的形式和传统Maven相似,mvn变成了mvnd,你也能够通过mvnd --help来查看残缺的命令选项清单。
https://zhuanlan.zhihu.com/p/...
https://zhuanlan.zhihu.com/p/...
https://zhuanlan.zhihu.com/p/...
https://zhuanlan.zhihu.com/p/...
https://zhuanlan.zhihu.com/p/...
https://zhuanlan.zhihu.com/p/...
说实话并行构建就是快,几乎坐火箭个别。另外,控制台输入也优化了。

因为GraalVM的加持,这个工具很可能会缩短Maven的生命,防止过早被Gradle拉开劣势。对于咱们来说,这个我的项目能够张望一下,看看Apache Maven官网的进一步动作。