<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 來了!!!性能提升 300%

          共 3010字,需瀏覽 7分鐘

           ·

          2021-12-28 15:54

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

          • Gradle 是一個基于 Apache Ant 和 Apache Maven 概念的項目自動化建構(gòu)工具。Gradle 構(gòu)建腳本使用的是 Groovy 或 Kotlin 的特定領(lǐng)域語言來編寫的,而不是傳統(tǒng)的 XML。
          • Takari 是 maven-wrapper 核心,大部分的開源項目都是提供 warpper 方便用戶不安裝 maven 的前提下快速構(gòu)建。

          關(guān)于 Gradle 的介紹和使用,可以看這篇文章:說實話,用完Gradle之后,有點嫌棄Maven了。賊好用!

          mvnd 介紹

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

          mvnd 的 Github 地址:https://github.com/apache/maven-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 默認(rèn)就支持使用多個 CPU 內(nèi)核進(jìn)行并行構(gòu)建。當(dāng)然如果你的源代碼不支持并行構(gòu)建,也可以通過添加- T1 參數(shù)切換到串行構(gòu)建。

          簡單嘗試

          接下來簡單嘗試一下 mvnd

          安裝

          目前 mvnd 已經(jīng)支持 LinuxMacOSWindows 平臺。你可以分別通過 SDKMANHomebrewChocolatey 這些包管理器進(jìn)行安裝。

          #?MacOS
          brew?install?mvndaemon/homebrew-mvnd/mvnd
          #?Windows
          choco?install?mvndaemon
          #?Linux
          sdk?install?mvnd

          安裝時間可能比較長一些,耐心等待即可。

          除此之外,你也可以直接去 mvnd 發(fā)行版?zhèn)}庫[2] 下載對應(yīng)的二進(jìn)制進(jìn)行安裝,選擇好對應(yīng)的版本即可。

          配置

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

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

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

          使用

          安裝配置完畢后命令行執(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 官方的進(jìn)一步動作。

          參考資料

          [1]

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

          [2]

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

          [3]

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


          ··········? END? ··············

          也許你還想看
          ? |?換掉 Postman + Swagger + JMeter,這 5 個 Java 項目絕了!
          ??|?官宣!我升級了!!!
          ? |?這樣使用 IDEA ,效率提升10倍!| IDEA 高效使用指南
          ? |?豆瓣 9.7!這本技術(shù)書籍直接封神了
          ? |?阿里開源的15個頂級Java項目!!!
          ? |?面試八股文,YYDS!

          我是 Guide哥,一個工作2年有余,接觸編程已經(jīng)6年有余的菜鳥。大三開源 JavaGuide,目前已經(jīng) 100k+ Star。未來幾年,希望持續(xù)完善 JavaGuide,爭取能夠幫助更多學(xué)習(xí) Java 的小伙伴!共勉!凎!點擊即可了解我的個人經(jīng)歷

          簡歷指導(dǎo)/Java 學(xué)習(xí)/面試指導(dǎo)/面試小冊,歡迎加入我的知識星球(公眾號后臺回復(fù)“星球”即可)。

          如果本文對你有幫助的話,歡迎點贊&在看&分享,這對我繼續(xù)分享&創(chuàng)作優(yōu)質(zhì)文章非常重要。感謝????

          瀏覽 31
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  蜜桃操逼视频 | 国产色婷婷国产综合在线 | 免费无码婬片A片AAA毛多多 | 中国一级久久毛 | 人人妻人人操人人屌 |