mvnd - the Maven Daemon
一、什么是mvnd
maven-mvnd是Apache Maven团队借鉴了Gradle和Takari技术后提供的更快的maven构建。
架构概述:
①:mvnd 内嵌了 Maven(所以不需要单独安装 Maven)
②:实际的构建发生在一个长期存在的后台进程中,也就是守护进程
③:一个守护进程实例可以服务来自 mvnd 客户端的多个连续请求
④:mvnd 客户端是使用 GraalVM 构建的本机可执行文件。与启动传统 JVM 相比,它启动速度更快,占用的内存更少
⑤:如果没有空闲守护程序来处理构建请求,则可以并行生成多个守护程序
这种架构带来了以下优势:
①:用于运行实际构建的 JVM 不需要为每个构建重新启动
②:持有 Maven 插件类的类加载器缓存在多个构建中。因此,插件 jars 只被读取和解析一次。 SNAPSHOT 版本的 Maven 插件没有被缓存
③:JVM 中的实时 (JIT) 编译器生成的本机代码也被保留。与库存 Maven 相比,JIT 编译花费的时间更少。在重复构建期间,JIT 优化代码立即可用。这不仅适用于来自 Maven 插件和 Maven Core 的代码,也适用于来自 JDK 本身的所有代码
二、安装配置
Install using Homebrew:brew install mvndaemon/homebrew-mvnd/mvnd
手动安装:
下载地址:https://github.com/apache/maven-mvnd/releases
①:下载最新的zip包
②:解压,添加bin路径到系统环境变量path中
③:如果没有配置JAVA_HOME环境变量,需要在conf/mvnd.properties中配置java.home
④:mvn/conf/settings.xml配置本地仓库路径
检查mvnd配置是否生效:mvnd -version
(base) ➜ conf mvnd -version mvnd native client 0.7.1-darwin-amd64 (97c587c11383a67b5bd0ff8388bd94c694b91c1e) Terminal: org.jline.terminal.impl.PosixSysTerminal with pty org.jline.terminal.impl.jansi.osx.OsXNativePty Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739) Maven home: /Users/yangyongjie/mvnd-0.7.1-darwin-amd64/mvn Java version: 1.8.0_281, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home/jre Default locale: zh_CN, platform encoding: UTF-8 OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
三、使用
将mvn 命令全部替换成mvnd命令,如:mvnd clean install
END.