持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情
我们在使用gradle 进行项目构建的时候,常用的命令就是gradle build,或者gradle assemble(不会进行test),如果没有安装gradle,也可以到根目录下执行./gradlew build 命令。
但是一定有很多人并不是很了解gradle 的构建过程,这篇文章我们就来说明一下。
在我们输入gradle build命令来构建整个项目,或者gradle task名称来执行某个任务的时候,gradle 就会进入到Gradle 的构建过程。它的构建过程分为以下三个阶段:
- init 初始化阶段
- configurre 配置阶段
- execute 执行阶段
下面我们来分别介绍这三个阶段的工作内容。
- init
初始化阶段的工作内容主要是解析settings.gradle 文件,setting.gradle 文件保存了gradle 的项目结构。解析之后,生成Settings对象,就可以确定需要参与构建的项目,然后为需要构建的项目创建Project对象。 - configure
在配置阶段,主要有两方面的工作内容。第一个是去解析build.gradle 文件,然后根据初始化阶段生成的Project对象去构建根项目和所有子项目;第二个工作内容就是去生成和配置在build.gradle 中定义的Task 对象,然后构造出Task 的关系依赖图。(生成的依赖图是有向无环图) - execute
执行阶段就是根据配置阶段生成的关系依赖图去执行Task。
对于Gradle 来说,在上面的三个阶段中,其每一个阶段的开始和结束都会有一些暴露给开发者使用的监听,从而为开发者在gradle 的生命周期的不同阶段中提供一些可定制化的入口,方便开发者做一些操作。
根据上面的描述,我们可以顺势提出接下来的内容:settings.gradle 文件和build.gradle 文件分别代表着Settings 对象和Project 对象,在其中分别有一个Gradle 对象。我们可以在Gradle项目根目录的settings.gradle 或build.gradle 中获取到其中的Gradle对象,然后就可以进行生命周期的监听。