Gradle与Maven有一个很大的区别是Gradle构建生命周期分三个阶段:
- 初始化阶段:负责判断有多少个Projects参与构建。
- 配置阶段:负责对初始化阶段创建的Projects完成配置。
- 执行阶段:根据配置阶段的配置执行任务。
初始化阶段
构建初始化阶段首先寻找一个叫settings.gradle的文件,检查是否当前构建是否是多项目构建,并负责创建项目树。在多项目构建中,settings.gradle是必需的,因为这个文件定义了参与构建的项目。
可以看出,settings.gradle中的代码最先执行,所以理论上还可以做其他事情。
而在没有settings.gradle文件的项目中,如果执行构建,则Gradle按这个顺序查找settings.gradle:
- 从当前目录的master文件夹内寻找。
- 如果master目录中也没有,则搜索父目录。
- 如果父目录也没找到,则把构建当成单个项目构建。
- 如果找到了,并且发现当前项目是多项目构建的一部分,则执行多项目构建。没找到,则执行单项目构建。
从第二步中可以看出,Gradle支持从子项目中触发构建父项目。如果不想从子项目触发父项目,而只是做单项目构建,则应该在gradle命令后加上-u命令行选项。
配置阶段
配置阶段负责对初始化阶段创建的projects做一些配置,比如添加Task,修改Task的行为等。
执行阶段
有些同学可能认为如果项目中没有默认任务,那么Gradle什么也不做