Spring Boot 把 Maven 干掉了
在國(guó)外某社交網(wǎng)站上有一個(gè)關(guān)于遷移 Spring Boot 遷移 Maven 至 Gradle 的帖子:

該貼子上也有很多人質(zhì)疑:Maven 用的好好的,為什么要遷移至 Gradle?
雖然該貼子只是說(shuō) Gradle 牛逼,但并沒(méi)有說(shuō)遷移至 Gradle 所帶來(lái)的影響和價(jià)值。
所以,Spring Boot 官方對(duì)此也發(fā)了博文作了解釋:
- https://spring.io/blog/2020/06/08/migrating-spring-boot-s-build-to-gradle
 
棧長(zhǎng)簡(jiǎn)單概括一下。
沒(méi)錯(cuò),Spring Boot 做了一個(gè)重大調(diào)整:
在 Spring Boot 2.3.0.M1 中,將首次使用 Gradle 代替 Maven 來(lái)構(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í)間來(lái)嘗試用 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)建所帶來(lái)的提升,并且還可以使用 Gradle 在一些第三方項(xiàng)目上的構(gòu)建緩存,這些優(yōu)勢(shì)都促使 Gradle 帶到構(gòu)建 Spring Boot 項(xiàng)目中來(lái)。
遷移有什么好處?
棧長(zhǎng)使用 Maven,哪怕只改一個(gè)代碼也是構(gòu)建全部,構(gòu)建項(xiàng)目確實(shí)要花不少時(shí)間。
Spring Boot 官方也給出了數(shù)據(jù),一次完整的 Maven 項(xiàng)目構(gòu)建一般需要一個(gè)小時(shí)或者以上,而在過(guò)去的 4 周時(shí)間內(nèi),使用 Gradle 構(gòu)建的平均時(shí)間只用了 9 分 22 秒!!!
如下面截圖所示:

光從構(gòu)建時(shí)間來(lái)看,效率真是倍數(shù)級(jí)的。
https://github.com/spring-projects/spring-boot/tree/v2.3.0.RELEASE
棧長(zhǎng)特意去看了下,在 Spring Boot 2.2.8 中使用的是 Maven:

而最新發(fā)布的 Spring Boot 2.3.1 已經(jīng)是切換到 Gradle 了:

會(huì)帶來(lái)什么影響?
也許會(huì)有小伙伴質(zhì)疑,Spring Boot 遷移到了 Gradle,會(huì)不會(huì)對(duì)公司現(xiàn)有的 Maven 項(xiàng)目或者后續(xù)的版本升級(jí)造成影響?
如果你只是使用 Spring Boot 框架來(lái)搭建系統(tǒng),那還是可以繼續(xù)使用 Maven 來(lái)管理依賴的,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 肯定是未來(lái)的趨勢(shì),但也不一定非得遷移至 Gradle,只有適合自己的才是最好的,畢竟現(xiàn)在 Maven 和 Gradle 都是主流,但是 Maven 更占有市場(chǎng),很多主流開(kāi)源項(xiàng)目都是以 Maven 依賴來(lái)作為示例演示的。
棧長(zhǎng)也會(huì)陸續(xù)關(guān)注 Spring Boot 動(dòng)態(tài),后續(xù)也會(huì)給大家?guī)?lái)各方面的教程,獲取歷史教程可以點(diǎn)擊下面的了解更多鏈接關(guān)注Java技術(shù)棧,掌握 Spring Boot 問(wèn)題不大。
學(xué)習(xí)、從不止步。















 
 
 










 
 
 
 