Spring Boot 把 Maven 干掉了,正式擁抱 Gradle!
在國(guó)外某社交網(wǎng)站上有一個(gè)關(guān)于遷移 Spring Boot 遷移 Maven 至 Gradle 的帖子:
該貼子上也有很多人質(zhì)疑:Maven 用的好好的,為什么要遷移至 Gradle?
雖然該貼子只是說 Gradle 牛逼,但并沒有說遷移至 Gradle 所帶來的影響和價(jià)值。
所以,Spring Boot 官方對(duì)此也發(fā)了博文作了解釋:
https://spring.io/blog/2020/06/08/migrating-spring-boot-s-build-to-gradle
我簡(jiǎn)單概括一下。
沒錯(cuò),Spring Boot 做了一個(gè)重大調(diào)整:
在 Spring Boot 2.3.0.M1 中,將首次使用 Gradle 代替 Maven 來構(gòu)建 Spring Boot 項(xiàng)目。
為什么要遷移?
Spring Boot 團(tuán)隊(duì)給出的主要原因是,遷移至 Gradle 可以減少構(gòu)建項(xiàng)目所花費(fèi)的時(shí)間。
因?yàn)槭褂?Maven 構(gòu)建,回歸測(cè)試時(shí)間太長(zhǎng)了,等待項(xiàng)目構(gòu)建大大增加了修復(fù) bug 和實(shí)現(xiàn)新特性的時(shí)間。
而 Gradle 的宗旨是減少構(gòu)建工作量,它可以根據(jù)需要構(gòu)建任何有變化的地方或者并行構(gòu)建。
當(dāng)然,Spring Boot 團(tuán)隊(duì)也花了很多時(shí)間來嘗試用 Maven 進(jìn)行 并行構(gòu)建,但因?yàn)闃?gòu)建 Spring Boot 項(xiàng)目的復(fù)雜性,最終失敗了。
另外,Spring Boot 團(tuán)隊(duì)也看到了在其他 Spring 項(xiàng)目中使用 Gradle 以及并行構(gòu)建所帶來的提升,并且還可以使用 Gradle 在一些第三方項(xiàng)目上的構(gòu)建緩存,這些優(yōu)勢(shì)都促使 Gradle 帶到構(gòu)建 Spring Boot 項(xiàng)目中來。
遷移有什么好處?
我使用 Maven,哪怕只改一個(gè)代碼也是構(gòu)建全部,構(gòu)建項(xiàng)目確實(shí)要花不少時(shí)間。
Spring Boot 官方也給出了數(shù)據(jù),一次完整的 Maven 項(xiàng)目構(gòu)建一般需要一個(gè)小時(shí)或者以上,而在過去的 4 周時(shí)間內(nèi),使用 Gradle 構(gòu)建的平均時(shí)間只用了 9 分 22 秒!??!
如下面截圖所示:
光從構(gòu)建時(shí)間來看,效率真是倍數(shù)級(jí)的。
https://github.com/spring-projects/spring-boot/tree/v2.3.0.RELEASE
我特意去看了下,在 Spring Boot 2.2.8 中使用的是 Maven:
而最新發(fā)布的 Spring Boot 2.3.1 已經(jīng)是切換到 Gradle 了:
會(huì)帶來什么影響?
也許會(huì)有小伙伴質(zhì)疑,Spring Boot 遷移到了 Gradle,會(huì)不會(huì)對(duì)公司現(xiàn)有的 Maven 項(xiàng)目或者后續(xù)的版本升級(jí)造成影響?
如果你只是使用 Spring Boot 框架來搭建系統(tǒng),那還是可以繼續(xù)使用 Maven 來管理依賴的,Spring Boot 會(huì)繼續(xù)在 Maven 中央倉(cāng)庫(kù)提交。
如下面所示:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>2.3.1.RELEASE</version>
</dependency>
因?yàn)楫?dāng)版本確定之后,這個(gè) Maven 構(gòu)建只是一次性的,不會(huì)影響 Spring Boot 團(tuán)隊(duì)的日常迭代效率。
但是,如果我們需要在本地構(gòu)建 Spring Boot 源碼,或者你正在學(xué)習(xí)最新 Spring Boot 源碼,就需要掌握 Gradle 構(gòu)建了。
題外話,Gradle 肯定是未來的趨勢(shì),但也不一定非得遷移至 Gradle,只有適合自己的才是最好的,畢竟現(xiàn)在 Maven 和 Gradle 都是主流,但是 Maven 更占有市場(chǎng),很多主流開源項(xiàng)目都是以 Maven 依賴來作為示例演示的。
—————END—————
喜歡本文的朋友們,歡迎長(zhǎng)按下圖關(guān)注公眾號(hào)程序員小灰,收看更多精彩內(nèi)容
給個(gè)[在看],是對(duì)小灰最大的支持!
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!