構建掃描是對構建的可分享的專門記錄,可以看到“構建中發生了那些行爲以及爲什麼會發生這種行爲”。通過在項目中使用構建掃描插件,開發者可以免費地在https://scans.gradle.com/上發佈構建掃描。
將要創建的
本文會展示如何在不對任何構建腳本進行修改的前提下發布專門的構建掃描。同時讀者也會學到如何通過修改構建腳本來實現對給定項目的所有構建啓用構建掃描。作爲可選項,開發者也可以修改初始腳本從而給所有的項目啓用構建掃描。
準備工作
- 自己的項目或Gradle提供的示例項目
- 連接至因特網
- Email郵箱
- 大約7分鐘的時間
選擇示例項目
Gradle提供了一個可以用來演示構建掃描的簡單Java項目。讀者想要使用的話可以去https://github.com/gradle/gradle-build-scan-quickstart克隆或下載該倉庫。
自動啓用構建掃描插件
自Gradle 4.3起,開發者無需在構建腳本中添加任何額外配置就可以啓用構建掃描。當使用--scan
命令行選項發佈構件掃描時,構建掃描所需的插件會自動被提供。在構建完成之前,會在命令行詢問開發者是否同意許可協議。下面的控制檯輸出展示了這一行爲。
$ ./gradlew build --scan
BUILD SUCCESSFUL in 6s
Do you accept the Gradle Cloud Services license agreement (https://gradle.com/terms-of-service)? [yes, no]
yes
Gradle Cloud Services license agreement accepted.
Publishing build scan...
https://gradle.com/s/czajmbyg73t62
該機制無需修改構建腳本就可以非常簡單地創建專門的一次性的構建掃描。如果你需要細粒度的配置,那就需要在構建腳本或初始腳本中進行配置,下節會進行講解。
給所有項目啓用構建掃描
給根項目的構建腳本添加包含如下內容的plugins
代碼塊:
Groovy
plugins {
id 'com.gradle.build-scan' version '1.16' ①
}
Kotlin
plugins {
id("com.gradle.build-scan") version "1.16" ①
}
① 使用在Gradle插件門戶可以找到的最新版本。
如果已經有plugins
代碼塊了,那麼記得總是應該把構建掃描插件放在第一個。雖然把它放在已有插件的下面依舊可以工作,但會丟失一些有用的信息。
接受許可證協議
爲了將掃描結果發佈至https://scans.gradle.com/,開發者需要同意許可證協議。除了可以在使用命令行發佈專門掃描時同意,也可以在Gradle構建配置文件中通過添加如下部分進行指定:
Groovy
buildScan {
termsOfServiceUrl = 'https://gradle.com/terms-of-service'
termsOfServiceAgree = 'yes
}
Kotlin
buildScan {
setTermsOfServiceUrl("https://gradle.com/terms-of-service")
setTermsOfServiceAgree("yes")
}
buildScan
代碼塊是用來配置構建掃描插件的。在這裏,我們添加了兩條同意許可證協議所需的屬性。此外還有其他一些屬性可用。詳細信息請參考構建掃描用戶手冊。
發佈構建掃描
通過--scan
命令行標記,可以發佈構建掃描。
我們給build
任務加上--scan
選項。當構建完成,在構建數據上傳到scans.gradle.com之後,會提供一個查看構建掃描的連接給你。
$ ./gradlew build --scan
BUILD SUCCESSFUL in 5s
Publishing build scan...
https://gradle.com/s/47i5oe7dhgz2c
在線查看構建掃描
在第一次訪問這個鏈接的時候,會提示你激活這個已存在的構建掃描。
激活構建掃描的Email郵件如圖所示:
通過Email中的鏈接,就可以看到已創建的構建掃描了。
現在,所有構建掃描的信息,包括任務的執行時間、每一個構建步驟的耗時、所有測試的結果、使用的插件、依賴、所有的命令行開關等就都可以查看了。
爲所有構建啓用構建掃描(可選)
通過使用Gradle初始化腳本,開發者就不用非得給每次構建都添加插件並同意許可了。創建~/.gradle/init.d
(波浪線爲用戶home文件夾)文件,並輸入如下內容:
buildScan.gradle
initscript {
repositories {
gradlePluginPortal()
}
dependencies {
classpath 'com.gradle:build-scan-plugin:1.16'
}
}
rootProject {
apply plugin: com.gradle.scan.plugin.BuildScanPlugin
buildScan {
termsOfServiceUrl = 'https://gradle.com/terms-of-service'
termsOfServiceAgree = 'yes'
}
}
buildScan.init.gradle.kts
initscript {
repositories {
gradlePluginPortal()
}
dependencies {
classpath("com.gradle:build-scan-plugin:1.16")
}
}
rootProject {
apply<com.gradle.scan.plugin.BuildScanPlugin>()
configure<com.gradle.scan.plugin.BuildScanExtension> {
setTermsOfServiceUrl("https://gradle.com/terms-of-service")
setTermsOfServiceAgree("yes")
}
}
初始化腳本會在需要的時候下載構建掃描插件並將其添加到所有項目中,而且還會接受許可證協議。現在,你可以給系統裏任意一個構建使用--scan
標誌了。
這個腳本里還可以添加其他更多的能力,例如在何種情況下才會發布掃描信息。更多信息請參考構建掃描用戶手冊。
總結
在本教程中,我們學習瞭如何:
- 生成構建掃描
- 在線查看構建掃描信息
- 通過創建初始腳本,給所有構建啓動構建掃描
接下來的步驟
更多信息請參考構建掃描用戶手冊。
幫忙改進本教程
尋求反饋或具有疑問?發現拼寫錯誤?和所有的Gradle教程一樣,幫助就是一個GitHub的issue。請在gradle-guides/creating-new-gradle-builds添加issue或拉取請求,我們會給您幫助。