Spring Boot從2.3.0M1開始使用Gradle而不是Maven了 - spring.io
我們在2.3.0.M1中對Spring Boot進行了相當重大的更改。這是使用Gradle而非Maven構建的專案的第一個版本。
Spring Boot團隊考慮切換到Gradle的主要原因是為了減少構建專案所需的時間。在進行和測試更改時,我們對反饋迴圈的長度感到沮喪。等待構建完成所花費的時間增加了修復錯誤和實現新功能所花費的時間。我們已經在其他Spring專案中看到了Gradle的增量和並行構建以及在第三方專案中看到了Gradle的構建快取的好處。我們希望我們可以在Spring Boot的構建中獲得類似的好處。
過去,我們曾嘗試利用Maven對並行構建的支援。由於Spring Boot構建的複雜性,特別是對Invoker外掛的使用,我們的嘗試失敗了。我們透過將構建分為四個部分來解決CI問題。首先構建專案的主要核心,然後並行構建三個獨立的部分。這種安排有所幫助,但CI的構建仍需要一個小時或更長時間。此外,由於拆分結構特定於CI構建,因此它並沒有使開發人員的本地構建更快。
Gradle具有構建結構的廣泛模型,瞭解每個任務的輸入和輸出及其相互依賴性。這種建模的承諾是,它允許任務並行執行,同時也可以增量,快取或兩者完全避免。換句話說,Gradle旨在最小化構建任何給定更改並並行執行必需的工作所需的工作量。使用Maven可能也可以並行構建。如果使用了Gradle Enterprise的Maven支援,我們也可以享受構建快取和不使用快取的好處。但是,要充分享受這四個方面的好處,我們認為我們必須嘗試切換到Gradle。
我們看到的對Gradle的一種批評是,它導致的構建比基於Maven的構建更難以維護和理解。Gradle的靈活性使事情可以用微妙的不同方式完成,即使是同一構建中的各個模組也是如此。
我想借此機會感謝Gradle團隊在遷移過程中提供的幫助,並慷慨地向我們提供了Gradle Enterprise許可以與我們的開源專案一起使用。我們已經在Spring Framework,Spring Security和Spring Boot中使用了它,其他團隊計劃開始在基於Gradle和Maven的構建中使用它。
我還要感謝我們正在使用的各種第三方外掛的維護者。他們提出了建議的更改,併合並了拉取請求,以改善對增量構建和快取的支援。沒有它們,我們將無法實現我們所看到的構建時間的減少。
如果您正在考慮從Maven遷移到Gradle,我希望多瞭解一些Spring Boot團隊的經驗是有用的。如果您是快樂的Maven使用者,請繼續使用並支援對您有效的工具。
相關文章
- 從零開始學 Spring BootSpring Boot
- 從零開始的Spring Boot (一)Spring Boot
- Spring Boot 把 Maven 幹掉了,擁抱 Gradle!Spring BootMavenGradle
- 開始使用GraphQL Java和Spring BootJavaSpring Boot
- 從零開始學Spring Boot系列-整合MySQLSpring BootMySql
- 從零開始學Spring Boot系列-整合mybatisSpring BootMyBatis
- 從零開始學Spring Boot系列-整合KafkaSpring BootKafka
- Spring Boot系列(一):Spring Boot快速開始Spring Boot
- 現在是時候了與Spring Boot 1.x說再見了! - spring.ioSpring Boot
- 重要版本Spring Boot 2.3.0釋出 - spring.ioSpring Boot
- 使用gradle搭建spring boot專案GradleSpring Boot
- 從零開始學Spring Boot系列-外部化配置Spring Boot
- 21. Spring Boot過濾器、監聽器【從零開始學Spring Boot】Spring Boot過濾器
- RSocket入門:Spring Boot伺服器 -Spring.ioSpring Boot伺服器
- 從 標籤開始看 SOFA-Boot 如何融入 SpringbootSpring
- 從零開始學Spring Boot系列-整合MyBatis-PlusSpring BootMyBatis
- 使用gradle管理spring-boot專案GradleSpringboot
- 使用Gradle構建Spring boot專案GradleSpring Boot
- Spring Boot—— Thymeleaf (gradle) 的簡單使用Spring BootGradle
- Spring Boot開發(Gradle+註解)Spring BootGradle
- 《Spring Boot從零開始學(視訊教學版)》快速入門Spring Boot應用開發Spring Boot
- 始終使用屬性(Property),而不是欄位(Data Member)
- 玩轉spring boot——快速開始Spring Boot
- 從零開始學Spring Boot系列-返回json資料Spring BootJSON
- 從零開始學Spring Boot系列-SpringApplicationSpring BootAPP
- 從頭開始開發一個 Gradle 外掛Gradle
- 從零開始學Spring Boot系列-整合Spring Security實現使用者認證與授權Spring Boot
- springboot gradle demo (使用 Gradle 構建的 Spring Boot專案)Spring BootGradle
- Spring Boot + Maven 多模組專案開發詳解Spring BootMaven
- 用gradle搭建spring boot專案GradleSpring Boot
- 通往Spring Boot本機應用的道路:Spring GraalVM Native 0.7.0可以使用了 - spring.ioSpring BootLVM
- SQL 查詢並不是從 SELECT 開始的SQL
- Maven專案Spring Boot啟動MavenSpring Boot
- 從零開始寫Java Web框架——maven 外掛JavaWeb框架Maven
- 在spring boot專案(maven)中引入其他 spring boot專案Spring BootMaven
- Gradle快速構建Spring Boot專案GradleSpring Boot
- 最新版的Chrome如何始終開啟flash而不是先詢問?Chrome
- 實戰Spring Boot 2.0系列(一) – 使用Gradle構建Docker映象Spring BootGradleDocker