一、什么是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.