更快的 Maven 來(lái)了!!!性能提升 300%
前幾天在 GitHub 上閑逛的時(shí)候,發(fā)現(xiàn)了一個(gè)新的項(xiàng)目:maven-mvnd,可以讀作 Maven Daemon,譯作 Maven 守護(hù)版,旨在為 Maven 提供更快的構(gòu)建速度,靈感借鑒了 Gradle 和 Takari(Maven 生命周期優(yōu)化器)。
https://github.com/apache/maven-mvnd

Maven 和 Gradle 可以說(shuō)是項(xiàng)目構(gòu)建工具中的絕代雙驕,我自己的觀點(diǎn)是:Maven 不比 Gradle 好,Gradle 也不比 Maven 好。

瞧我這該死的觀點(diǎn),足夠的圓滑。
Maven 的優(yōu)點(diǎn)是穩(wěn)定可靠,在絕大多數(shù)的項(xiàng)目上工作良好,社區(qū)生態(tài)很完善,幾乎所有的 Java 開(kāi)發(fā)者都在用。Maven 的缺點(diǎn)是,對(duì)于大一點(diǎn)的項(xiàng)目來(lái)說(shuō),構(gòu)建太慢了。
Gradle 的優(yōu)點(diǎn)是足夠的靈活,構(gòu)建速度也會(huì)更快一點(diǎn),因?yàn)槭褂昧撕笈_(tái)進(jìn)程和緩存機(jī)制。Gradle 的缺點(diǎn)是版本迭代速度太快,社區(qū)跟不上,對(duì)于初學(xué)者來(lái)說(shuō),學(xué)習(xí)曲線比較陡峭。
mvnd 并不是 Maven 的重構(gòu)版,等于是 Maven ∩ (Gradle & Takari) 部分優(yōu)點(diǎn)的一個(gè)交集。
mvnd 使用了以下架構(gòu)方式:
內(nèi)部嵌入了 Maven,所以不需要單獨(dú)安裝 Maven。 使用守護(hù)進(jìn)程進(jìn)行構(gòu)建,守護(hù)進(jìn)程可以為多個(gè) mvnd 客戶端的連續(xù)請(qǐng)求提供服務(wù)。 使用了內(nèi)置的 GraalVM 虛擬機(jī),和傳統(tǒng)的 Java 虛擬機(jī)相比,它的啟動(dòng)速度更快,使用內(nèi)存更少,內(nèi)部的 JIT 編譯器在編譯時(shí)花費(fèi)的時(shí)間也更少。 如果已有的守護(hù)進(jìn)程都在工作中,則可以新建多個(gè)守護(hù)進(jìn)程來(lái)支撐新的構(gòu)建請(qǐng)求。
這種架構(gòu)方式使得 mvnd 的性能優(yōu)勢(shì)得到了進(jìn)一步提升。
好,我們來(lái)簡(jiǎn)單嘗試下。
mvnd 像 Maven 一樣,可以跨平臺(tái),支持 Windows、macOS和 Linux。自動(dòng)化安裝的命令也非常簡(jiǎn)單,如下所示:
#?Windows
choco?install?mvndaemon?
#?Linux
sdk?install?mvnd
#?macOS
brew?install?mvndaemon/homebrew-mvnd/mvnd
為了方便演示,我這里采用手動(dòng)安裝的方式,速度也會(huì)更快一點(diǎn)。
通過(guò)下面的網(wǎng)址下載 mvnd 的 release 版本:
https://github.com/apache/maven-mvnd/releases

下載完成后解壓,然后把 bin 目錄添加到 PATH 路徑下。
在終端執(zhí)行 mvnd -v 就可以查看到 mvnd 的配置信息了。

如果出現(xiàn)類似下面這樣的錯(cuò)誤,未找到 JAVA_HOME,可以按照提示在對(duì)應(yīng)的文件中追加 java.home 屬性,也就是 JDK 的安裝路徑。

剛好之前搭建了一個(gè)Spring Boot 項(xiàng)目,我們可以拿 Maven 和 mvnd 來(lái)對(duì)比一下構(gòu)建速度。
先執(zhí)行 mvn clean package 命令,一共花費(fèi)的時(shí)間是 5.318 秒。

再執(zhí)行 mvnd clean package 命令,一共花費(fèi)的時(shí)間是 3.225 秒。

反復(fù)多測(cè)試幾次,發(fā)現(xiàn) mvnd 確實(shí)比 Maven 要快上許多!Maven 維持在 5 秒多,mvnd 維持在 3 秒左右。
當(dāng)然了,我本地這個(gè) Spring Boot 項(xiàng)目本身非常簡(jiǎn)單,如果是構(gòu)建時(shí)間更長(zhǎng)一點(diǎn)的項(xiàng)目,mvnd 的優(yōu)勢(shì)會(huì)更大。
感受一下 mvnd 在一個(gè) 24 核電腦上執(zhí)行的樣子吧,簡(jiǎn)直就是效率神器!


沒(méi)有什么使我停留——除了目的,縱然岸旁有玫瑰、有綠蔭、有寧?kù)o的港灣,我是不系之舟。
推薦閱讀:
