在國外某社交網站上有一個關於遷移 Spring Boot 遷移 Maven 至 Gradle 的帖子:
該貼子上也有很多人質疑: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://github.com/spring-projects/spring-boot/tree/v2.3.0.RELEASE
棧長特意去看了下,在 Spring Boot 2.2.8 中使用的是 Maven:
而最新發布的 Spring Boot 2.3.1 已經是切換到 Gradle 了:
會帶來什麼影響?
也許會有小夥伴質疑,Spring Boot 遷移到了 Gradle,會不會對公司現有的 Maven 專案或者後續的版本升級造成影響?
如果你只是使用 Spring Boot 框架來搭建系統,那還是可以繼續使用 Maven 來管理依賴的,Spring Boot 會繼續在 Maven 中央倉庫提交。
如下面所示:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>2.3.1.RELEASE</version>
</dependency>
因為當版本確定之後,這個 Maven 構建只是一次性的,不會影響 Spring Boot 團隊的日常迭代效率。
但是,如果我們需要在本地構建 Spring Boot 原始碼,或者你正在學習最新 Spring Boot 原始碼,就需要掌握 Gradle 構建了。
題外話,Gradle 肯定是未來的趨勢,但也不一定非得遷移至 Gradle,只有適合自己的才是最好的,畢竟現在 Maven 和 Gradle 都是主流,但是 Maven 更佔有市場,很多主流開源專案都是以 Maven 依賴來作為示例演示的。
棧長也會陸續關注 Spring Boot 動態,後續也會給大家帶來各方面的教程,獲取歷史教程可以在Java技術棧公眾號後臺回覆:boot,掌握 Spring Boot 問題不大。
學習、從不止步。
推薦去我的部落格閱讀更多:
2.Spring MVC、Spring Boot、Spring Cloud 系列教程
3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程
覺得不錯,別忘了點贊+轉發哦!