Maven经常与Gradle进行比较。最大的缺点之一是Maven构建缓慢。Gradle比Maven快2到10倍。现在Maven可以更快了。ApacheMaven团队从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的简单介绍不重MavenConstruct工程,但内置Maven。它实际上是一个或多个Maven守护进程执行实际的构建服务。一个守护进程实例可以为来自mvnd客户端的多个连续请求提供Maven构建服务。当没有空闲守护进程来支持构建请求时,mvnd可以并行生成多个守护进程。使用GraalVM而不是JVMmvnd更快,因为它使用GraalVM而不是传统的JVM,所以它启动更快,占用内存更少,并且在进行构建时不需要为每个构建启动一个新的JVM。此外,Maven插件不再需要在构建时多次加载,而是在多次构建时缓存。Maven插件的SNAPSHOT版本不会被缓存。支持JITGraalVM的JIT(JustInTime)实时编译特性也用于Maven构建作业。JIT可以大大减少编译时间。在反复的构建过程中,JIT优化后的代码立即可用,也大大提高了构建效率。并行构建目前Maven3的并行构建(parallelbuilds)还是一个实验性的特性,需要的插件必须是线程安全的。默认情况下,mvnd支持使用多个CPU内核进行并行构建。当然,如果你的源代码不支持并行构建,你也可以通过添加-T1参数切换到串行构建。SimpleTryNext,简单尝试mvnd。安装目前,mvnd已经支持Linux、MacOS和Windows平台。您可以分别通过SDKMAN、Homebrew和Chocolatey等包管理器安装它们。也可以直接去mvnd发行版仓库下载对应的binary进行安装。这里以Windows为例,我选择Chocolatey安装:chocoinstallmvndaemon复制代码可能需要很长时间。配置配置非常简单,只需要注意两点。如果不使用包管理器安装,请确保mvnd的bin目录与PATH相关联。如果没有配置或者不想配置JAVA_HOME环境变量,请在~/.m2/mvnd.properties中设置java.home指定Java目录,例如:java.home=C:\AdoptOpenJDK\jdk-8。如果您已经配置了环境变量,请忽略此项。其他配置项可以参考mvnd配置。安装配置完成后,在命令行执行mvnd--version,会出现如下结果,说明安装成功。mvnd--versionmvndnativeclient0.7.1-windows-amd64(97c587c11383a67b5bd0ff8388bd94c694b91c1e)Terminal:org.jline.terminal.impl.jansi.win.JansiWinSysTerminalApacheMaven3.8.3(ff8e977a158738155dc465c6a97ffaf31982d739)Mavenhome:C:\ProgramFiles\mvndaemon\mvnd-0.7.1-windows-amd64\mvnJava版本:1.8.0_282,供应商:AdoptOpenJDK,运行时:C:\ProgramFiles\AdoptOpenJDK\jdk-8.0.282.8-hotspot\jre默认语言环境:zh_CN,平台编码:GBKOS名称:“windows10",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利用。对于我们来说,这个项目可以拭目以待,看看ApacheMaven官方的进一步动作。
