构建扫描是对构建的可分享的专门记录,可以看到“构建中发生了那些行为以及为什么会发生这种行为”。通过在项目中使用构建扫描插件,开发者可以免费地在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或拉取请求,我们会给您帮助。