成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么 Spring Boot 2.3.0 放棄 Maven 轉投 Gradle ?

開發 開發工具
在 2.3.0 中對 Spring Boot 進行了相當重大的更改,這是使用 Gradle 而非 Maven 構建的項目的第一個版本。

 在 2.3.0 中對 Spring Boot 進行了相當重大的更改,這是使用 Gradle 而非 Maven 構建的項目的第一個版本。

Spring 的每個項目都獨立的項目組在開發運營,在用戶最常使用的白盒部分(例如 API 設計)保持一致性,對于用戶不可見的黑盒部分,各個項目組選擇自己適合工具沒有統一的約定。

例如: 項目構建工具。Spring Framework 自 2012 年的 3.2.0 起就使用 Gradle 構建,而一年后開始使用 Spring Boot,此后不久又開始使用 Spring Cloud,兩者都基于 Maven。

項目 構建工具
Spring Framework Gradle
Spring Boot Maven
Spring Cloud Maven

為什么要切換

Spring Boot 團隊考慮由 Maven 切換到 Gradle 的主要原因為了減少構建項目所需的時間。在開發和測試過程中,等待構建完成所花費的時間增加了修復錯誤和實現新功能所花費的時間。

為了解決這個問題,團隊曾嘗試利用 Maven 對并行構建的支持。由于 Spring Boot 構建的復雜性,特別是對 Invoker 插件的使用,嘗試失敗。通過將構建分為四個部分來解決 CI 問題。首先構建項目的主要核心,然后并行構建三個獨立的部分。但 CI 的構建仍需要一個小時或更長時間。此外,由于針對的是模塊化 CI 構建,因此并沒有使得開發人員本地構建效率有所改變。

Spring Boot 團隊在其他利用 Gradle 作為構建工具的 Spring 項目中看到了 Gradle 的增量和并行構建以及在第三方項目中看到了 Gradle 的構建緩存的好處。希望通過使用 Gradle 為 Spring Boot 構建獲得類似的好處。

Gradle 具有非常靈活的構建模型,并且可以定義每個任務的輸入和輸出及其相互依賴性。這種構建模型的好處是,它允許任務并行運行,同時也可以增量、緩存或完全跳過。換句話說,Gradle 可以最小化的執行必要的 CI 任務。雖然可以使用了 Gradle Enterprise 的 Maven 支持,我們也可以享受構建緩存和跳過的好處。但是要充分享受這四個方面的好處,必須嘗試切換到 Gradle。

如何切換

Gradle 配置過于靈活,導致它的構建比基于 Maven 構建更難以維護和理解。例如: 同一個構建結果,可以通過不同的配置實現。如果切換到 Gradle,需要避免這種情況。從目前發布的四個 Spring Boot 2.3 里程碑版本,在核心團隊或貢獻者中,還沒有發現任何重大的構建問題。

  • Spring Boot 關鍵功能是約定優于配置,將這種方法應用于構建。避免在 build.gradle 文件中包含命令式邏輯,編寫了幾個可以在項目的中找到的小插件 buildSrc。。

雖然現有 Gradle 生態系統對 Spring Boot 構建幾乎空白,需要從頭通過編寫很多通用的 gradle 插件來應用到 Spring Boot,但遷移到 Gradle 的提交從代碼庫中刪除了近 9500 行。

切換結果

就減少項目構建時間而言,將構建遷移到 Gradle 無疑是成功的。如上所述,在 CI 和開發人員機器上,基于 Maven 的完整構建都需要一個小時或更長時間。而基于 Gradle 的平均成功構建時間為 9 分 22 秒,如以下截圖所示:

 

如果對構建性能的更多細節感興趣,可以在 Spring Boot 的公共Gradle Enterprise實例上獲得更多數據。

除了提高性能外,對其他功能進行探索。例如,一段時間以來,進行許多不穩定的測試。由于這些原因,構建失敗的次數比預期要多,可以在 Tests 儀表板中看到這一點。使用 Gradle 分片測試來替代 CI 的通用測試方案,并幫組我們了解是否已成功解決問題。

 

結論

CI 構建現在平均大約需要 20 分鐘,比以前快 3-4 倍。

本地構建平均需要 2 分鐘 30 秒,比以前快 20-30 倍。

 

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2020-08-14 10:40:35

RestTemplatRetrofitJava

2015-04-16 11:04:13

ICT渠道華為

2022-11-01 08:55:55

編譯工具MavenSpring

2023-03-10 10:32:44

Vanilla OSUbuntuDebian Sid

2011-06-08 10:30:08

MongoDB

2009-04-23 10:41:59

微軟IE瀏覽器

2024-06-24 07:58:00

2023-07-23 17:19:34

人工智能系統

2011-06-28 09:22:46

黑莓RIMAndroid

2016-12-28 10:37:46

AndroidGradleApache Ant

2013-05-15 11:02:17

2013-03-14 10:47:58

2011-06-23 14:32:53

LTECDMA運營商

2022-05-10 15:24:34

KafkaZooKeeperKafka Raft

2021-02-01 07:20:51

KafkaPulsar搜索

2019-12-30 08:34:40

ZabbixPrometheus監控

2020-11-09 14:03:51

Spring BootMaven遷移

2012-05-13 14:15:49

2018-12-21 11:26:49

MySQLMongoDB數據庫

2020-05-07 16:30:32

Spring BootJava
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩在线免费视频 | 国产精品久久久久久亚洲调教 | 欧美日韩在线一区 | 免费一区 | 日本视频免费 | 欧美色综合网 | 米奇狠狠鲁 | 国产91丝袜在线播放 | 欧美高清视频一区 | 久久九精品 | 国产精品一级 | 午夜影视网 | 欧美三级在线 | 成人在线看片 | 精品视频在线一区 | 国产精品18久久久 | 久久精品国产精品青草 | 久久精品亚洲精品国产欧美 | 国产成人区 | 国产精品theporn | 99精品国产一区二区青青牛奶 | 天天操夜夜操 | 三级成人片 | 精品一区二区三区四区五区 | 国产精品毛片一区二区在线看 | 91精品国产一区二区 | 狠狠草视频 | 91精品国产91久久综合桃花 | 欧美日韩亚洲国产 | 亚洲小视频在线播放 | 国产欧美日韩一区 | 欧美一区二区三区视频在线观看 | 日日综合| 国产一级久久久久 | 91视视频在线观看入口直接观看 | 色综合激情 | 午夜影院在线播放 | 国产高清在线视频 | 黄色免费观看网站 | 日韩中文字幕在线视频观看 | 国产精品99999 |