<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來了,我的天,速度提升了8倍!

          共 1847字,需瀏覽 4分鐘

           ·

          2022-01-01 15:20

          周末被 maven-mvnd 刷屏了,于是我也下載了一個 mvnd 體驗了一把。雖然測試的數(shù)據(jù)都是基于我本地項目,不具備普適性和權威性,但也足以說明問題。它的測試結果遠遠超出我的預期,下面一起來看。

          什么是 mvnd?

          mvnd 是 Maven Daemon 的縮寫 ,翻譯成中文就是 Maven 守護進程。
          mvnd 是 apache/maven 的一個子項目,它并不是一個全新的構建工具,而是對 maven 的擴展。它內(nèi)置了 maven,其實現(xiàn)原理是構建了一個或者多個 maven 守護進程來執(zhí)行構建服務。

          ??


          mvnd 概述

          1.mvnd 的目標是使用 Gradle 和 Takari 所知的技術提供更快的 Maven 構建。
          Gradle 是一個基于 Apache Ant 和 Apache Maven 概念的項目自動化建構工具。Gradle 構建腳本使用的是 Groovy 或 Kotlin 的特定領域語言來編寫的,而不是傳統(tǒng)的 XML。Gradle 最大的優(yōu)勢就是比傳統(tǒng)的 Maven 構建速度更快。Takari 是 maven-wrapper 核心,大部分的開源項目都是提供 warpper 方便用戶不安裝 maven 的前提下快速構建項目的。
          2.mvnd 內(nèi)嵌了 Maven,所以不需要單獨安裝 Maven 了。
          3.一個守護進程實例可以服務于來自 mvnd 客戶端的多個連續(xù)請求。?
          4.mvnd 客戶端使用 GraalVM 構建本地可執(zhí)行文件,與啟動傳統(tǒng) JVM 相比,它啟動得更快,占用的內(nèi)存更少。?
          5.如果 mvnd 沒有空閑守護進程來服務一個構建請求,可以并行地生成多個守護進程。


          ?

          mvnd 優(yōu)點介紹

          mvnd 具有以下優(yōu)點:
          1. 用于運行構建的 JVM 不需要每次構建都重新啟動。
          2. 持有 Maven 插件類的類加載器在多個構建中會被緩存。因此,插件 jar 文件只被讀取和解析一次。(快照版本的 Maven 插件不會被緩存)
          3. JVM 中即時(JIT)編譯器生成的本地代碼也被保留,與常規(guī) Maven 相比,JIT 編譯所花費的時間更少。在重復構建期間,JIT 優(yōu)化的代碼立即可用,這不僅適用于來自 Maven 插件和 Maven Core的代碼,也適用于所有來自 JDK 本身的代碼。

          ?

          ?

          mvnd 安裝

          mvnd 支持 Window、Linux、Macos,本文以 Windows 安裝為例。

          1.下載并解壓 mvnd

          下載地址:https://github.com/apache/maven-mvnd/releases選擇最新版的 Windows 資源包,如下圖所示:

          下載完成之后,解壓到本地的某個目錄,如下圖所示:

          2.配置環(huán)境變量

          將 mvnd 解碼包的執(zhí)行目錄 bin 配置到系統(tǒng)變量 path 中,操作步驟如下圖所示:

          3.測試 mvnd 安裝

          接下來打開命令行窗口,使用“mvnd -version”檢查一下 mvnd 是否正常安裝成功,如下圖所示:

          如果打印了相關的版本信息就說明安裝成功了。

          ?

          ?

          mvn VS mvnd 性能測試

          接下來就是本文的重頭戲了,使用我本地的一個項目來測試一下 mvn 和 mvnd 的性能差距。
          我的電腦配置如下:

          1.mvn 性能測試

          傳統(tǒng)的 maven 執(zhí)行結果如下圖所示:

          打包我本地的一個項目,跳過單元測試。
          mvn 性能測試結果:1.312 秒。

          2.mvnd 性能測試


          mvnd 性能測試結果 0.154 秒。

          ?

          ?

          總結

          本文介紹了 mvnd,一個內(nèi)置了 maven 但執(zhí)行效率遠比 maven 快很多的工具。它的上手難度很低,對于用戶來說,只是將之前 maven 命令的開頭從“mvn”換成了“mvnd”而已。
          mvnd 構建了一個或者多個 maven 守護進程,使用了全新的 VM 引擎,并添加了緩存及 JIT 優(yōu)化,從而大大的提高了 maven 項目的構建速度,也讓我們看到了一個能與 Gradle 一較高下的希望,我會持續(xù)關注此項目,希望它發(fā)展的越來越好。
          參考資料:https://github.com/apache/maven-mvnd

          有道無術,術可成;有術無道,止于術

          歡迎大家關注Java之道公眾號


          好文章,我在看??

          ?
          ?
          瀏覽 30
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  日韩午夜影院 | 久草社区男人天堂 | 1234精品视频在线观看 | 激情性无码视频在线播放 | 亚洲最大黄色 |