1. Maven推出強化項目:maven-mvnd,構(gòu)建速度大幅提升!

        共 2310字,需瀏覽 5分鐘

         ·

        2021-12-28 15:28

        與優(yōu)秀的人在一起,自己也會優(yōu)秀起來,點擊加群

        Maven經(jīng)常被拿來和Gradle做對比,最大的劣勢之一就是Maven構(gòu)建慢,GradleMaven構(gòu)建速度快2到10倍,而如今Maven也可以更快了。Apache Maven團隊從GradleTakari(Maven生命周期優(yōu)化器)[1]中獲得靈感對Maven進行了強化,衍生出?maven-mvnd[2]項目。

        簡單介紹

        mvnd并不是對Maven進行了重構(gòu),而是內(nèi)置了Maven。它實際上是一個或者多個Maven守護進程,用來執(zhí)行實際的構(gòu)建服務。一個守護進程實例可以為來自mvnd客戶端的多個連續(xù)請求提供Maven構(gòu)建服務。當沒有空閑的守護進程時來支撐構(gòu)建請求時,mvnd可以并行生成多個守護程序。

        使用GraalVM代替JVM

        mvnd之所以快是因為它使用了GraalVM替代了傳統(tǒng)的JVM,因此它啟動更快,占用內(nèi)存更少,而且在實行構(gòu)建時不需要為每個構(gòu)建啟動新的JVM。另外Maven插件在構(gòu)建時不再需要多次加載,而是緩存在多個構(gòu)建中。SNAPSHOT版本的Maven插件不會被緩存。

        支持JIT

        GraalVMJIT(Just In Time)實時編譯特性也被運用到Maven構(gòu)建作業(yè)中。JIT可以大大降低編譯時間,在重復構(gòu)建過程中,JIT優(yōu)化代碼立即可用,也極大提高了構(gòu)建效率。

        并行構(gòu)建

        目前Maven 3的并行構(gòu)建(parallel builds)還是實驗特性,而且要求使用的插件必須是線程安全的。而mvnd默認就支持使用多個CPU內(nèi)核進行并行構(gòu)建。當然如果你的源代碼不支持并行構(gòu)建,也可以通過添加- T1?參數(shù)切換到串行構(gòu)建。

        簡單嘗試

        接下來簡單嘗試一下mvnd

        安裝

        目前mvnd已經(jīng)支持Linux、MacOS、Windows平臺。你可以分別通過SDKMAN、Homebrew、Chocolatey這些包管理器進行安裝。也可以直接去mvnd發(fā)行版?zhèn)}庫[3]下載對應的二進制進行安裝。這里以Windows為例,我選擇Chocolatey安裝:

        choco?install?mvndaemon

        時間可能比較長一些。

        配置

        配置很簡單,只需要注意兩點

        • 如果不使用包管理器進行安裝的話請確保mvndbin目錄關(guān)聯(lián)到PATH。
        • 如果沒有配置或者不想配置JAVA_HOME環(huán)境變量的話請在~/.m2/mvnd.properties中設置java.home以指定Java目錄,例如:java.home=C:\\AdoptOpenJDK\\jdk-8。已經(jīng)配置環(huán)境變量的請忽略該條。

        其它的配置項可參考mvnd配置[4]。

        使用

        安裝配置完畢后命令行執(zhí)行mvnd --version出現(xiàn)下列結(jié)果就表示安裝成功了。

        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的方式和傳統(tǒng)Maven類似,mvn變成了mvnd,你也可以通過mvnd --help來查看完整的命令選項清單。

        說實話并行構(gòu)建就是快,簡直坐火箭一般。另外,控制臺輸出也優(yōu)化了。

        由于GraalVM的加持,這個工具很可能會延長Maven的生命,避免過早被Gradle拉開優(yōu)勢。對于我們來說,這個項目可以觀望一下,看看Apache Maven官方的進一步動作。

        阿里大佬的《LeetCode刷題答案》PDF新鮮出爐

        年末面試必備!點擊直接領取吧?

        參考資料

        [1]

        Takari(Maven生命周期優(yōu)化器):?http://takari.io/book/40-lifecycle.html

        [2]

        maven-mvnd:?https://github.com/apache/maven-mvnd

        [3]

        mvnd發(fā)行版?zhèn)}庫:?https://github.com/mvndaemon/mvnd/releases

        [4]

        mvnd配置:?https://github.com/mvndaemon/mvnd/blob/master/dist/src/main/distro/conf/mvnd.properties


        了解行業(yè)熱點、探索技術(shù)前沿

        技術(shù)人的彎道超車從關(guān)注程序猿DD開始

        點擊閱讀原文,送你免費Spring Boot教程!

        瀏覽 52
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 天天做天天爱天天做 | 欧美国产视频在线观看 | 伊人官网| 99自拍视频导航在线播放 | 性爱精品视频 |