<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          更快的Maven來了

          共 2022字,需瀏覽 5分鐘

           ·

          2022-01-03 03:04


          源?/?? ? ? ??文/?


          Maven經(jīng)常被拿來和Gradle做對比,最大的劣勢之一就是Maven構(gòu)建慢,GradleMaven構(gòu)建速度快2到10倍,而如今Maven也可以更快了。Apache Maven團隊從GradleTakari(Maven生命周期優(yōu)化器)[1]中獲得靈感對Maven進行了強化,衍生出?maven-mvnd[2]項目。點贊再看轉(zhuǎn)發(fā)走一波,胖哥帶你玩新東西。

          簡單介紹

          mvnd并不是對Maven進行了重構(gòu),而是內(nèi)置了Maven。它實際上是一個或者多個Maven守護進程,用來執(zhí)行實際的構(gòu)建服務(wù)。一個守護進程實例可以為來自mvnd客戶端的多個連續(xù)請求提供Maven構(gòu)建服務(wù)。當沒有空閑的守護進程時來支撐構(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可以大大降低編譯時間,在重復(fù)構(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)支持LinuxMacOSWindows平臺。你可以分別通過SDKMANHomebrewChocolatey這些包管理器進行安裝。也可以直接去mvnd發(fā)行版?zhèn)}庫[3]下載對應(yīng)的二進制進行安裝。這里以Windows為例,我選擇Chocolatey安裝:

          choco?install?mvndaemon

          時間可能比較長一些。

          配置

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

          • 如果不使用包管理器進行安裝的話請確保mvndbin目錄關(guān)聯(lián)到PATH
          • 如果沒有配置或者不想配置JAVA_HOME環(huán)境變量的話請在~/.m2/mvnd.properties中設(shè)置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"

          為了降低學(xué)習(xí)成本mvnd的方式和傳統(tǒng)Maven類似,mvn變成了mvnd,你也可以通過mvnd --help來查看完整的命令選項清單。

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

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



          END


          頂級程序員:topcoding

          做最好的程序員社區(qū):Java后端開發(fā)、Python、大數(shù)據(jù)、AI


          一鍵三連「分享」、「點贊」和「在看」


          瀏覽 50
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美第二页 | 操逼电影网 | 美女扒开腿秘 免费视频 | 国产69久久成人看精品 | 天天操天天操天天逼天天逼天天日天天逼 |