1. 背景
在开始学习 Gradle 之前,建议先初步了解 Groovy 脚本,特别是闭包规则。如果尚未熟悉 Groovy,可以先查阅相关基础资料。Gradle 核心基于 Groovy 的领域特定语言(DSL),具有极佳的扩展性,无论是简单的独立项目还是大型多项目构建,都能高效提升构建任务效率,尤其对多项目支持非常出色。
Gradle 环境必须依赖 JDK 与 Groovy 库:
- JDK 版本必须是 JDK6 以上;
- Gradle 自带 Groovy 库,已安装的 Groovy 会被忽略。
2. Gradle DSL 基础
Gradle 的实质是配置脚本,执行特定类型的配置脚本时会创建关联对象。例如执行 Build script 脚本会创建 Project 对象,这是 Gradle 的代理对象。
| 脚本类型 | 关联对象类型 |
|---|---|
| Build script | Project |
| Init script | Gradle |
| Settings script | Settings |
Project 对象:每个 build.gradle 对应一个 Project 对象。 Gradle 对象:构建初始化时创建,整个构建过程中只有一个,通常不修改默认配置。 Settings 对象:每个 settings.gradle 对应一个 Settings 对象。
编写指定类型 Gradle 脚本时,可直接使用关联对象的属性和方法。每个脚本都实现了 Script 接口,因此也可以直接使用 Script 接口的属性与方法。
2.1 构建脚本 Build script(Project)
在 Gradle 中,每个待编译的工程都是一个 Project(每个工程的 build.gradle 对应一个 Project 对象)。每个 Project 在构建时包含一系列 Task,其中很多由 Gradle 插件默认支持。
编写 Gradle 脚本实质大多是在编写构建脚本,因此 Project 和 Script 对象的 API 非常重要。
每一个 Project 对象和 build.gradle 一一对应,构建流程如下:
- 为当前项目创建一个 Settings 类型的实例。
- 如果存在 settings.gradle 文件,通过该文件配置 Settings 实例。
- 通过 Settings 实例的配置创建项目层级结构的 Project 对象实例。
- 执行每个 Project 对应的 build.gradle 脚本。
2.2 初始化脚本与设置脚本
Gradle 对象:初始化脚本 Init script 在构建开始前运行,主要用于为 Build script 做准备。可将其放置在 USER_HOME/.gradle 相关目录下。我们可以通过调用 Project.getGradle() 方法获得 Gradle 实例对象。
Settings 对象:Settings 实例与 settings.gradle 文件一一对应,用于项目设置配置(如多项目树构建)。该文件一般放置在工程根目录。
2.3 构建生命周期
Gradle 构建脚本生命周期分为三个阶段:初始化、配置、执行。
settings.gradle 文件: 除了构建脚本,Gradle 还定义了约定名称的设置文件(默认为 settings.gradle)。该文件在初始化阶段被执行。对于多项目构建,根目录下必须有此文件;单项目构建可选,但建议保留。
示例(单项目):
// settings.gradle
println 'This is executed during the initialization phase.'
// build.gradle
println 'This is executed during the configuration phase.'
task configured {
println 'This is also executed during the configuration phase.'
}
task test << {
println 'This is executed during the execution phase.'
}
task testBoth {
doFirst { println 'This is executed first during the execution phase.' }
doLast { println 'This is executed last during the execution phase.' }
println 'This is executed during the configuration phase as well.'
}


