取代 Maven?這款項目構建工具性能提升 300%

在 GitHub 上閒逛的時候,發現了一個新的項目:maven-mvnd,持續霸佔 GitHub trending 榜單好幾天了。

maven-mvnd,可以讀作 Maven Daemon,譯作 Maven 守護版,旨在爲 Maven 提供更快的構建速度,靈感借鑑了 Gradle 和 Takari(Maven 生命週期優化器)。

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

Maven 和 Gradle 可以說是項目構建工具中的絕代雙驕,我自己的觀點是:Maven 不比 Gradle 好,Gradle 也不比 Maven 好

瞧我這該死的觀點,足夠的圓滑。

Maven 的優點是穩定可靠,在絕大多數的項目上工作良好,社區生態很完善,幾乎所有的 Java 開發者都在用。Maven 的缺點是,對於大一點的項目來說,構建太慢了。

Gradle 的優點是足夠的靈活,構建速度也會更快一點,因爲使用了後臺進程和緩存機制。Gradle 的缺點是版本迭代速度太快,社區跟不上,對於初學者來說,學習曲線比較陡峭。

mvnd 並不是 Maven 的重構版,等於是 Maven ∩ (Gradle & Takari) 部分優點的一個交集

mvnd 使用了以下架構方式:

  • 內部嵌入了 Maven,所以不需要單獨安裝 Maven。
  • 使用守護進程進行構建,守護進程可以爲多個 mvnd 客戶端的連續請求提供服務。
  • 使用了內置的 GraalVM 虛擬機,和傳統的 Java 虛擬機相比,它的啓動速度更快,使用內存更少,內部的 JIT 編譯器在編譯時花費的時間也更少。
  • 如果已有的守護進程都在工作中,則可以新建多個守護進程來支撐新的構建請求。

這種架構方式使得 mvnd 的性能優勢得到了進一步提升。

好,我們來簡單嘗試下。

mvnd 像 Maven 一樣,可以跨平臺,支持 Windows、macOS和 Linux。自動化安裝的命令也非常簡單,如下所示:

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

爲了方便演示,我這裏採用手動安裝的方式,速度也會更快一點。

通過下面的網址下載 mvnd 的 release 版本:

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

下載完成後解壓,然後把 bin 目錄添加到 PATH 路徑下。

在終端執行 mvnd -v 就可以查看到 mvnd 的配置信息了。

如果出現類似下面這樣的錯誤,未找到 JAVA_HOME,可以按照提示在對應的文件中追加 java.home 屬性,也就是 JDK 的安裝路徑。

剛好之前搭建了一個Spring Boot 項目,我們可以拿 Maven 和 mvnd 來對比一下構建速度。

先執行 mvn clean package 命令,一共花費的時間是 5.318 秒。

再執行 mvnd clean package 命令,一共花費的時間是 3.225 秒。

反覆多測試幾次,發現 mvnd 確實比 Maven 要快上許多!Maven 維持在 5 秒多,mvnd 維持在 3 秒左右。

當然了,我本地這個 Spring Boot 項目本身非常簡單,如果是構建時間更長一點的項目,mvnd 的優勢會更大。

感受一下 mvnd 在一個 24 核電腦上執行的樣子吧,簡直就是效率神器!


本篇已收錄至 GitHub 上星標 1.0k+ star 的開源專欄《Java 程序員進階之路》,該專欄風趣幽默、通俗易懂,對 Java 愛好者極度友好和舒適😄,內容包括但不限於 Java 基礎、Java 集合框架、Java IO、Java 併發編程、Java 虛擬機、Java 企業級開發(Git、SSM、Spring Boot)等核心知識點。

該專欄目前也在霸榜 GitHub Trending(Java 類),這讓二哥終於體會到了霸榜的快樂!

star 了這個專欄就等於你在浩瀚的 Java 知識海洋裏有了一盞再也不會迷路的燈塔。

https://github.com/itwanger/toBeBetterJavaer

沒有什麼使我停留——除了目的,縱然岸旁有玫瑰、有綠蔭、有寧靜的港灣,我是不繫之舟

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章