Gradle 5.0正式版出來(lái)有幾天了市埋,這個(gè)工具的發(fā)展速度還真是驚人刻蚯。前些天我看到gradle 5 rc版的時(shí)候還在想正式版什么時(shí)候出,沒(méi)想到rc版沒(méi)過(guò)幾天正式版就出來(lái)了剩失。那么正好屈尼,就來(lái)介紹一下gradle 5.0正式版加入的一些新功能吧。
依賴版本對(duì)齊
項(xiàng)目中引用的第三方包多了拴孤,難免出現(xiàn)引入了同一個(gè)包的不同版本脾歧,導(dǎo)致沖突的情況發(fā)生。依賴版本對(duì)齊這個(gè)功能就是為了解決這種情況而出現(xiàn)的演熟。如果要對(duì)齊依賴版本鞭执,首先需要一個(gè)邏輯組(platform),platform規(guī)定了要使用的依賴版本芒粹,它可以是我們聲明的依賴版本兄纺,也可以是由其他地方導(dǎo)入的BOM文件。在遇到了不同版本的情況下是辕,都會(huì)對(duì)齊到platform中規(guī)定的版本上囤热。
下面是官方文檔的例子:
dependencies {
// 導(dǎo)入了BOM文件, 會(huì)覆蓋其他地方聲明的版本
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")
// 這里的版本會(huì)被對(duì)齊到BOM中聲明的版本
implementation("org.codehaus.groovy:groovy:1.8.6")
}
Kotlin DSL 1.0
Gradle官方很早就開(kāi)始開(kāi)發(fā)基于Kotlin的DSL了获三,在Gradle 5.0中Kotlin DSL正式版終于現(xiàn)身了旁蔼,這意味著我們可以在生產(chǎn)項(xiàng)目中使用Kotlin DSL了。和默認(rèn)的Groovy DSL相比疙教,由于Kotlin DSL是靜態(tài)的棺聊,所以可以提供更多的代碼補(bǔ)全、提示贞谓、語(yǔ)法高亮等支持限佩。
如果想要使用Kotlin DSL,但是還是不太熟悉Kotlin DSL的語(yǔ)法也沒(méi)有關(guān)系裸弦,Gradle官方早就寫(xiě)了一大堆示例項(xiàng)目祟同,相信你看完以后肯定就了解如何使用了。連接在這里理疙。
Gradle構(gòu)建初始化功能
gradle init
任務(wù)現(xiàn)在增加了一些很實(shí)用的功能:
- 交互模式晕城,初始化的時(shí)候可以在交互模式中輸入信息;
- Kotlin類庫(kù)和程序窖贤,現(xiàn)在可以在初始化的時(shí)候生成Kotlin類庫(kù)和程序類型;
- 用推薦的配置生成構(gòu)建砖顷,init任務(wù)現(xiàn)在會(huì)使用
implementation
贰锁、testImplementation
和testRuntimeOnly
配置來(lái)代替原來(lái)的compile
、testCompile
和testRuntime
滤蝠。 - 配置項(xiàng)目和代碼包名豌熄,現(xiàn)在init任務(wù)提供了參數(shù)來(lái)設(shè)置項(xiàng)目和源代碼的包名;
- 創(chuàng)建資源文件夾物咳,現(xiàn)在init任務(wù)還會(huì)創(chuàng)建空的
resource
文件夾锣险; - 創(chuàng)建
.gitignore
文件。
可搜索的文檔
這個(gè)改進(jìn)屬于官方文檔的改進(jìn)览闰,現(xiàn)在官方文檔基于Algolia添加了搜索框囱持,可以搜索你想要的內(nèi)容。
任務(wù)超時(shí)
現(xiàn)在任務(wù)可以指定一個(gè)超時(shí)值焕济,當(dāng)執(zhí)行時(shí)間超過(guò)的時(shí)候會(huì)停止。
解析依賴時(shí)的HTTP重試
現(xiàn)在當(dāng)Gradle通過(guò)HTTP訪問(wèn)遠(yuǎn)程倉(cāng)庫(kù)的時(shí)候盔几,如果失敗晴弃,會(huì)在拉黑這個(gè)倉(cāng)庫(kù)之前重試。
性能改進(jìn)
以低優(yōu)先級(jí)進(jìn)程方式啟動(dòng)
現(xiàn)在Gradle可以使用--priority low
命令行參數(shù)或者org.gradle.priority=low
屬性作為低優(yōu)先級(jí)進(jìn)程啟動(dòng)逊拍,這可以保證IDE和終端即使在繁重的任務(wù)時(shí)始終處于可響應(yīng)狀態(tài)上鞠。
還有一些性能改動(dòng),感興趣可以參考官方文檔卒茬。
Java 11支持
現(xiàn)在可以使用Java 11來(lái)運(yùn)行Gradle沿癞。
這個(gè)功能其實(shí)也挺重要的杯活,之前在升級(jí)到Java 11的時(shí)候我發(fā)現(xiàn)一些Gradle構(gòu)建失敗了,現(xiàn)在可以正常運(yùn)行它們了谴咸。
提升的功能
之前很多功能都處于測(cè)試和開(kāi)發(fā)狀態(tài),現(xiàn)在它們作為正式特性出現(xiàn)在Gradle中了骗露。官方文檔有一個(gè)很長(zhǎng)的列表岭佳,這里只簡(jiǎn)單列出一部分:
- 之前在4.0中提升的特性
- 并行任務(wù)執(zhí)行
- 持續(xù)構(gòu)建
- 組合構(gòu)建
-
java-gradle-plugin
插件 -
distribution
插件 -
jacoco
插件
更新日志還有很多地方我沒(méi)有介紹,有興趣的可以查看官方文檔萧锉。