Java精選面試題(微信小程序):5000+道面試題和選擇題,真實面經(jīng),簡歷模版,包含Java基礎(chǔ)、并發(fā)、JVM、線程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架構(gòu)設(shè)計、大廠真題等,在線隨時刷題!
Maven-mvnd(通常簡稱mvnd)主要解決了Maven構(gòu)建過程中的以下痛點需求:
構(gòu)建速度慢:Maven構(gòu)建過程中的一個主要瓶頸是在每個構(gòu)建周期開始時JVM的初始化。JVM的啟動需要加載大量的類和初始化環(huán)境,這在大型項目或多模塊項目中尤其耗時。mvnd通過維護(hù)一個長期運行的Maven守護(hù)進(jìn)程(Daemon),避免了每次構(gòu)建時JVM的重復(fù)啟動,顯著提高了構(gòu)建速度。
資源消耗高:每次構(gòu)建都需要消耗系統(tǒng)資源,如CPU和內(nèi)存,用于JVM的啟動和運行。mvnd的守護(hù)進(jìn)程能夠在構(gòu)建之間保持活躍,減少了資源的浪費,特別是在持續(xù)集成/持續(xù)部署(CI/CD)環(huán)境中,頻繁的構(gòu)建會更加受益于此優(yōu)化。
頻繁構(gòu)建的延遲:在現(xiàn)代開發(fā)實踐中,快速反饋循環(huán)是非常重要的。然而,傳統(tǒng)的Maven構(gòu)建可能會導(dǎo)致開發(fā)人員在修改代碼后等待較長的時間才能看到構(gòu)建結(jié)果。mvnd通過加速構(gòu)建過程,縮短了等待時間,提高了開發(fā)效率。
多項目構(gòu)建優(yōu)化:對于擁有多個Maven項目的組織,mvnd可以顯著減少構(gòu)建整個項目集所需的時間。守護(hù)進(jìn)程可以被多個構(gòu)建請求共享,從而減少了每個項目構(gòu)建的前置時間。
易于遷移和使用:mvnd在使用上與傳統(tǒng)Maven非常相似,這意味著開發(fā)人員無需學(xué)習(xí)新的構(gòu)建工具語法或調(diào)整現(xiàn)有的Maven POM文件。這種無縫遷移的能力使得mvnd成為了一個低風(fēng)險的選擇,特別是對于那些希望改進(jìn)構(gòu)建性能但又不想放棄Maven生態(tài)系統(tǒng)的團(tuán)隊。
通過解決上述痛點,Maven-mvnd旨在提供一個更高效、更快速的構(gòu)建體驗,同時保持與現(xiàn)有Maven工作流的兼容性,從而為開發(fā)團(tuán)隊帶來更高的生產(chǎn)力和更快的迭代速度。
Maven-mvnd介紹
Maven 的優(yōu)點是穩(wěn)定可靠,在絕大多數(shù)的項目上工作良好,社區(qū)生態(tài)很完善,幾乎所有的 Java 開發(fā)者都在用。Maven 的缺點是,對于大一點的項目來說,構(gòu)建太慢了。有時候只能在服務(wù)器端完成構(gòu)建,心酸呀。
Gradle 的優(yōu)點是足夠的靈活,構(gòu)建速度也會更快一點,因為使用了后臺進(jìn)程和緩存機(jī)制。Gradle 的缺點是版本迭代速度太快,社區(qū)跟不上,對于初學(xué)者來說,還是有一定的學(xué)習(xí)曲線。
所有是否有一種能快速構(gòu)建Java項目的工具時,今天重點推薦maven-mvnd,是Apache Maven團(tuán)隊借鑒了Gradle和Takari的優(yōu)點,衍生出來的更快的構(gòu)建工具,maven的強(qiáng)化版,解決Maven構(gòu)建慢的問題,又不需要重新學(xué)習(xí),懂Maven你就能駕馭Maven-mvnd。
maven-mvnd 特性:
嵌入 Maven (所以不需要單獨安裝 Maven);maven 過渡到 maven-mvnd的過程中實現(xiàn) 無縫切換!所以不需要再安裝maven或進(jìn)行復(fù)雜的配置更改。
實際的構(gòu)建發(fā)生在一個長期存在的后臺進(jìn)程中,也就是守護(hù)進(jìn)程。如果沒有為構(gòu)建請求服務(wù)的空閑守護(hù)進(jìn)程,則可以并行產(chǎn)生多個守護(hù)進(jìn)程。
一個守護(hù)進(jìn)程實例可以處理來自 mvnd 客戶機(jī)的多個連續(xù)請求。
使用 GraalVM 構(gòu)建的本地可執(zhí)行文件。與傳統(tǒng)的 JVM 相比,它啟動更快,使用的內(nèi)存更少。
這種架構(gòu)帶來的優(yōu)勢有:
運行實際構(gòu)建的 JVM 不需要為每個構(gòu)建重新啟動,節(jié)省時間。
JVM 中的實時(JIT)編譯器生成的本機(jī)代碼也保留了下來。與 Maven 相比,JIT 編譯花費的時間更少。在重復(fù)構(gòu)建過程中,JIT 優(yōu)化的代碼可以立即使用。
這不僅適用于來自 Maven 插件和 Maven Core 的代碼,也適用于來自 JDK 本身的所有代碼。
使用步驟
1.下載
地址:https://github.com/mvndaemon/mvnd/releases
![]()
2.安裝
直接解壓。然后配置環(huán)境變量:
JAVA_HOME
MAVEN_HOME
MAVEN_MVND_HOME
![]()
將 bin 目錄添加到 PATH,注意前提條件JAVA_HOME是存在,如果沒有配置JAVA_HOME
![]()
3. 測試
mvnd -v![]()
4. 使用
在使用上和Maven一樣,參數(shù)也一致。
Maven 使用 mvn clean package; 使用Maven-mvnd 只需要變成 mvnd clean package 即可,其他同理。
5. 配置修改
為了最小程度的兼容原來的Maven,可以使用原來的 setting.xml
打開 Maven-mvnd 安裝目錄下 的 /conf/mvnd.properties 文件,在文件最后一行,修改如下:
如果沒有配置JAVA_HOME也可以指定Java JDK路徑:
maven.settings=F:/javaee/apache-maven-3.6.3/conf/settings.xml![]()
![]()
打包對比
# maven 打包命令 mvn clean package '-Dmaven.test.skip=true' # mvnd 打包命令 mvnd clean package '-Dmaven.test.skip=true'![]()
如果子項目越多,相對速度更快的趨勢。總的來說,如果項目模塊很多,可以嘗試使用 mvnd 進(jìn)行輔助打包,比如 測試、生產(chǎn),可以節(jié)省很多時間。
最后,如果你要追求高打包效率,使用Gradle也是一種解決方案,可以嘗試。最后在項目中推行一種或混合的模式。
作者:TechLearn
來源:https://juejin.cn/post/7394073179483947008
公眾號“Java精選”所發(fā)表內(nèi)容注明來源的,版權(quán)歸原出處所有(無法查證版權(quán)的或者未注明出處的均來自網(wǎng)絡(luò),系轉(zhuǎn)載,轉(zhuǎn)載的目的在于傳遞更多信息,版權(quán)屬于原作者。如有侵權(quán),請聯(lián)系,筆者會第一時間刪除處理!
最近有很多人問,有沒有讀者交流群!加入方式很簡單,公眾號Java精選,回復(fù)“加群”,即可入群!
文章有幫助的話,點在看,轉(zhuǎn)發(fā)吧!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.