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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM