1. 程式人生 > >Spring Boot 把 Maven 幹掉了,擁抱 Gradle!

Spring Boot 把 Maven 幹掉了,擁抱 Gradle!

在國外某社交網站上有一個關於遷移 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/面試題/) 覺得不錯,別忘了點贊+轉發哦!