1. 程式人生 > >Gradle 5.0 更新介紹

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官方早就寫了一大堆示例專案,相信你看完以後肯定就瞭解如何使用了。連線在這裡

Kotlin DSL

Gradle構建初始化功能

gradle init任務現在增加了一些很實用的功能:

  • 互動模式,初始化的時候可以在互動模式中輸入資訊;
  • Kotlin類庫和程式,現在可以在初始化的時候生成Kotlin類庫和程式型別;
  • 用推薦的配置生成構建,init任務現在會使用implementationtestImplementationtestRuntimeOnly配置來代替原來的compiletestCompiletestRuntime
  • 配置專案和程式碼包名,現在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中了。官方文件有一個很長的列表,這裡只簡單列出一部分:

更新日誌還有很多地方我沒有介紹,有興趣的可以檢視官方文件。