Spring Boot 把 Maven 幹掉了,擁抱 Gradle!
阿新 • • 發佈:2020-06-17
在國外某社交網站上有一個關於遷移 Spring Boot 遷移 Maven 至 Gradle 的帖子:
![](https://img2020.cnblogs.com/other/1218593/202006/1218593-20200617101444432-613256673.png)
該貼子上也有很多人質疑:Maven 用的好好的,為什麼要遷移至 Gradle?
雖然該貼子只是說 Gradle 牛逼,但並沒有說遷移至 Gradle 所帶來的影響和價值。
所以,Spring Boot 官方對此也發了博文作了解釋:
> https://spring.io/blog/2020/06/08/migrating-spring-boot-s-build-to-gradle
棧長簡單概括一下。
**沒錯,Spring Boot 做了一個重大調整:**
在 Spring Boot 2.3.0.M1 中,將首次使用 Gradle 代替 Maven 來構建 Spring Boot 專案。
## 為什麼要遷移?
Spring Boot 團隊給出的主要原因是,遷移至 Gradle 可以**減少構建專案所花費的時間**。
因為使用 Maven 構建,迴歸測試時間太長了,等待專案構建大大增加了修復 bug 和實現新特性的時間。
而 Gradle 的宗旨是減少構建工作量,它可以根據需要構建任何有變化的地方或者並行構建。
當然,Spring Boot 團隊也花了很多時間來嘗試用 Maven 進行 並行構建,但因為構建 Spring Boot 專案的複雜性,最終失敗了。
另外,Spring Boot 團隊也看到了在其他 Spring 專案中使用 Gradle 以及並行構建所帶來的提升,並且還可以使用 Gradle 在一些第三方專案上的構建快取,這些優勢都促使 Gradle 帶到構建 Spring Boot 專案中來。
## 遷移有什麼好處?
棧長使用 Maven,哪怕只改一個程式碼也是構建全部,構建專案確實要花不少時間。
Spring Boot 官方也給出了資料,一次完整的 Maven 專案構建一般需要一個小時或者以上,而在過去的 4 周時間內,使用 Gradle 構建的平均時間只用了 9 分 22 秒!!!
如下面截圖所示:
![](https://img2020.cnblogs.com/other/1218593/202006/1218593-20200617101444790-1916432712.png)
光從構建時間來看,效率真是倍數級的。
> https://github.com/spring-projects/spring-boot/tree/v2.3.0.RELEASE
棧長特意去看了下,在 Spring Boot 2.2.8 中使用的是 Maven:
![](https://img2020.cnblogs.com/other/1218593/202006/1218593-20200617101445456-53870588.png)
而最新發布的 [Spring Boot 2.3.1](https://mp.weixin.qq.com/s/zQkhQJsNk7SjbbErLXxfaQ) 已經是切換到 Gradle 了:
![](https://img2020.cnblogs.com/other/1218593/202006/1218593-20200617101445782-1195884597.png)
## 會帶來什麼影響?
也許會有小夥伴質疑,Spring Boot 遷移到了 Gradle,會不會對公司現有的 Maven 專案或者後續的版本升級造成影響?
如果你只是使用 Spring Boot 框架來搭建系統,那還是可以繼續使用 Maven 來管理依賴的,Spring Boot 會繼續在 Maven 中央倉庫提交。
如下面所示:
```
```
因為當版本確定之後,這個 Maven 構建只是一次性的,不會影響 Spring Boot 團隊的日常迭代效率。
但是,如果我們需要在本地構建 Spring Boot 原始碼,或者你正在學習最新 Spring Boot 原始碼,就需要掌握 Gradle 構建了。
題外話,Gradle 肯定是未來的趨勢,但也不一定非得遷移至 Gradle,只有適合自己的才是最好的,畢竟現在 Maven 和 Gradle 都是主流,但是 Maven 更佔有市場,很多主流開源專案都是以 Maven 依賴來作為示例演示的。
棧長也會陸續關注 Spring Boot 動態,後續也會給大家帶來各方面的教程,獲取歷史教程可以在Java技術棧公眾號後臺回覆:boot,掌握 Spring Boot 問題不大。
學習、從不止步。
**推薦去我的部落格閱讀更多:**
1.[Java JVM、集合、多執行緒、新特性系列教程](http://www.javastack.cn/categories/Java/)
2.[Spring MVC、Spring Boot、Spring Cloud 系列教程](http://www.javastack.cn/categories/Spring/)
3.[Maven、Git、Eclipse、Intellij IDEA 系列工具教程](http://www.javastack.cn/categories/工具/)
4.[Java、後端、架構、阿里巴巴等大廠最新面試題](http://www.javastack.cn/categories/面試題/)
覺得不錯,別忘了點贊+轉發哦!