Gradle 5.0 更新介紹
Gradle 5.0正式版出來有幾天了,這個工具的發展速度還真是驚人。前些天我看到gradle 5 rc版的時候還在想正式版什麼時候出,沒想到rc版沒過幾天正式版就出來了。那麼正好,就來介紹一下gradle 5.0正式版加入的一些新功能吧。
依賴版本對齊
專案中引用的第三方包多了,難免出現引入了同一個包的不同版本,導致衝突的情況發生。依賴版本對齊這個功能就是為了解決這種情況而出現的。如果要對齊依賴版本,首先需要一個邏輯組(platform),platform規定了要使用的依賴版本,它可以是我們宣告的依賴版本,也可以是由其他地方匯入的BOM檔案。在遇到了不同版本的情況下,都會對齊到platform中規定的版本上。
下面是官方文件的例子:
dependencies { // 匯入了BOM檔案, 會覆蓋其他地方宣告的版本 implementation(enforcedPlatform("org.springframework.boot:spring-boot-dependencies:1.5.8.RELEASE")) // define dependencies without versions implementation("com.google.code.gson:gson") implementation("dom4j:dom4j") // 這裡的版本會被對齊到BOM中宣告的版本 implementation("org.codehaus.groovy:groovy:1.8.6") }
Kotlin DSL 1.0
Gradle官方很早就開始開發基於Kotlin的DSL了,在Gradle 5.0中Kotlin DSL正式版終於現身了,這意味著我們可以在生產專案中使用Kotlin DSL了。和預設的Groovy DSL相比,由於Kotlin DSL是靜態的,所以可以提供更多的程式碼補全、提示、語法高亮等支援。
如果想要使用Kotlin DSL,但是還是不太熟悉Kotlin DSL的語法也沒有關係,Gradle官方早就寫了一大堆示例專案,相信你看完以後肯定就瞭解如何使用了。連線在這裡。
Gradle構建初始化功能
gradle init
任務現在增加了一些很實用的功能:
- 互動模式,初始化的時候可以在互動模式中輸入資訊;
- Kotlin類庫和程式,現在可以在初始化的時候生成Kotlin類庫和程式型別;
- 用推薦的配置生成構建,init任務現在會使用
implementation
、testImplementation
和testRuntimeOnly
配置來代替原來的compile
、testCompile
和testRuntime
。 - 配置專案和程式碼包名,現在init任務提供了引數來設定專案和原始碼的包名;
- 建立資原始檔夾,現在init任務還會建立空的
resource
資料夾; - 建立
.gitignore
檔案。
可搜尋的文件
這個改進屬於官方文件的改進,現在官方文件基於Algolia添加了搜尋框,可以搜尋你想要的內容。
任務超時
現在任務可以指定一個超時值,當執行時間超過的時候會停止。
解析依賴時的HTTP重試
現在當Gradle通過HTTP訪問遠端倉庫的時候,如果失敗,會在拉黑這個倉庫之前重試。
效能改進
以低優先順序程序方式啟動
現在Gradle可以使用--priority low
命令列引數或者org.gradle.priority=low
屬性作為低優先順序程序啟動,這可以保證IDE和終端即使在繁重的任務時始終處於可響應狀態。
還有一些效能改動,感興趣可以參考官方文件。
Java 11支援
現在可以使用Java 11來執行Gradle。
這個功能其實也挺重要的,之前在升級到Java 11的時候我發現一些Gradle構建失敗了,現在可以正常執行它們了。
提升的功能
之前很多功能都處於測試和開發狀態,現在它們作為正式特性出現在Gradle中了。官方文件有一個很長的列表,這裡只簡單列出一部分:
- 之前在4.0中提升的特性
- 並行任務執行
- 持續構建
- 組合構建
java-gradle-plugin
外掛distribution
外掛jacoco
外掛
更新日誌還有很多地方我沒有介紹,有興趣的可以檢視官方文件。