Java高性能新一代構(gòu)建工具M(jìn)aven-mvnd(實(shí)踐可行版)
Maven-mvnd介紹
Maven 的優(yōu)點(diǎn)是穩(wěn)定可靠,在絕大多數(shù)的項(xiàng)目上工作良好,社區(qū)生態(tài)很完善,幾乎所有的 Java 開發(fā)者都在用。Maven 的缺點(diǎn)是,對(duì)于大一點(diǎn)的項(xiàng)目來(lái)說(shuō),構(gòu)建太慢了。有時(shí)候只能在服務(wù)器端完成構(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í)曲線。
所有是否有一種能快速構(gòu)建Java項(xiàng)目的工具時(shí),今天重點(diǎn)推薦maven-mvnd,是Apache Maven團(tuán)隊(duì)借鑒了Gradle和Takari的優(yōu)點(diǎn),衍生出來(lái)的更快的構(gòu)建工具,maven的強(qiáng)化版,解決Maven構(gòu)建慢的問(wèn)題,又不需要重新學(xué)習(xí),懂Maven你就能駕馭Maven-mvnd。
maven-mvnd 特性:
- 嵌入 Maven (所以不需要單獨(dú)安裝 Maven);maven 過(guò)渡到 maven-mvnd的過(guò)程中實(shí)現(xiàn) 無(wú)縫切換!所以不需要再安裝maven或進(jìn)行復(fù)雜的配置更改。
- 實(shí)際的構(gòu)建發(fā)生在一個(gè)長(zhǎng)期存在的后臺(tái)進(jìn)程中,也就是守護(hù)進(jìn)程。如果沒(méi)有為構(gòu)建請(qǐng)求服務(wù)的空閑守護(hù)進(jìn)程,則可以并行產(chǎn)生多個(gè)守護(hù)進(jìn)程。
- 一個(gè)守護(hù)進(jìn)程實(shí)例可以處理來(lái)自 mvnd 客戶機(jī)的多個(gè)連續(xù)請(qǐng)求。
- 使用 GraalVM 構(gòu)建的本地可執(zhí)行文件。與傳統(tǒng)的 JVM 相比,它啟動(dòng)更快,使用的內(nèi)存更少。
這種架構(gòu)帶來(lái)的優(yōu)勢(shì)有:
- 運(yùn)行實(shí)際構(gòu)建的 JVM 不需要為每個(gè)構(gòu)建重新啟動(dòng),節(jié)省時(shí)間。
- JVM 中的實(shí)時(shí)(JIT)編譯器生成的本機(jī)代碼也保留了下來(lái)。與 Maven 相比,JIT 編譯花費(fèi)的時(shí)間更少。在重復(fù)構(gòu)建過(guò)程中,JIT 優(yōu)化的代碼可以立即使用。這不僅適用于來(lái)自 Maven 插件和 Maven Core 的代碼,也適用于來(lái)自 JDK 本身的所有代碼。
使用步驟
下載
https://github.com/mvndaemon/mvnd/releases

安裝
直接解壓。然后配置環(huán)境變量:
- JAVA_HOME
- MAVEN_HOME
- MAVEN_MVND_HOME

將 bin 目錄添加到 PATH,注意前提條件JAVA_HOME是存在,如果沒(méi)有配置JAVA_HOME
測(cè)試
mvnd -v

使用
在使用上和Maven一樣,參數(shù)也一致。
Maven 使用mvn clean package;使用Maven-mvnd 只需要變成mvnd clean package即可,其他同理。
配置修改
為了最小程度的兼容原來(lái)的Maven,可以使用原來(lái)的setting.xml
打開 Maven-mvnd 安裝目錄下 的/conf/mvnd.properties 文件,在文件最后一行,修改如下:
如果沒(méi)有配置JAVA_HOME也可以指定Java JDK路徑:
maven.settings=F:/javaee/apache-maven-3.6.3/conf/settings.xml

打包對(duì)比
# maven 打包命令 mvn clean package '-Dmaven.test.skip=true' # mvnd 打包命令 mvnd clean package '-Dmaven.test.skip=true'

子項(xiàng)目越多,相對(duì)速度更快的趨勢(shì)。
總的來(lái)說(shuō),如果項(xiàng)目模塊很多,可以嘗試使用 mvnd 進(jìn)行輔助打包,比如 測(cè)試、生產(chǎn),可以節(jié)省很多時(shí)間;
到此這篇關(guān)于新一代Java高性能構(gòu)建工具M(jìn)aven-mvnd【實(shí)踐可行版】的文章就介紹到這了,更多相關(guān)Java構(gòu)建工具M(jìn)aven-mvnd內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot整合easy-es的詳細(xì)過(guò)程
本文介紹了EasyES,一個(gè)基于Elasticsearch的ORM框架,旨在簡(jiǎn)化開發(fā)流程并提高效率,EasyES支持SpringBoot框架,并提供了CRUD操作、批量操作和查詢操作等方法,文章還列舉了使用EasyES時(shí)可能遇到的技術(shù)難題及解決方法,感興趣的朋友一起看看吧2025-02-02
IDEA中新建/切換Git分支的實(shí)現(xiàn)步驟
本文主要介紹了IDEA中新建/切換Git分支的實(shí)現(xiàn)步驟,通過(guò)菜單創(chuàng)建新分支并選擇是否切換,創(chuàng)建后在Git詳情或右鍵Checkout中切換分支,感興趣的可以了解一下2025-07-07
springboot的EnvironmentPostProcessor接口方法源碼解析
這篇文章主要介紹了springboot的EnvironmentPostProcessor接口方法源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Java中一維二維數(shù)組的靜態(tài)和動(dòng)態(tài)初始化
今天通過(guò)本文給大家分享Java中的數(shù)組,包括一維數(shù)組和二維數(shù)組的靜態(tài)初始化和動(dòng)態(tài)初始化問(wèn)題,感興趣的朋友一起看看吧2017-10-10
new出來(lái)的對(duì)象中無(wú)法使用@autowired進(jìn)行對(duì)象bean注入問(wèn)題
這篇文章主要介紹了基于new出來(lái)的對(duì)象中無(wú)法使用@autowired進(jìn)行對(duì)象bean注入問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Java后端實(shí)現(xiàn)異步編程的9種方式總結(jié)
我們?nèi)粘i_發(fā)的時(shí)候,經(jīng)常說(shuō)到異步編程,比如說(shuō),在注冊(cè)接口,我們?cè)谟脩糇?cè)成功時(shí),用異步發(fā)送郵件通知用戶,那么實(shí)現(xiàn)異步編程一共有多少種方式呢,下面小編就來(lái)簡(jiǎn)單講講吧2025-03-03
如何將eclipse項(xiàng)目導(dǎo)入到idea的方法步驟(圖文)
這篇文章主要介紹了如何將eclipse項(xiàng)目導(dǎo)入到idea的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03

