在多项目构建中,项目的结构用树结构表示。初始化阶段,settings.gradle负责创建一棵由一系列ProjectDescriptor组成的项目树,当这棵树组装完毕,接着Gradle就根据这棵由ProjectDescriptors组成的项目树再创建一个由一系列Project对象组成的项目树。
也就是说,在初始化阶段,我们在settings.gradle中操作的是ProjectDescriptor,而在配置和执行阶段,我们在build.gradle中操作的是Project。
准备
Settings.gradle的位置
默认情况下,settings.gradle文件和build.gradle文件的位置相同。
而在没有settings.gradle文件的项目中,如果执行构建,则Gradle按这个顺序查找settings.gradle:
- 从当前目录的master文件夹内寻找。
- 如果master目录中也没有,则搜索父目录。
- 如果父目录也没找到,则把构建当成单个项目构建。
- 如果找到了,并且发现当前项目是多项目构建的一部分,则执行多项目构建。没找到,则执行单项目构建。
从第二步中可以看出,Gradle支持从子项目中触发构建父项目。如果不想从子项目触发父项目,而只是做单项目构建,则应该在gradle命令后加上-u命令行选项。
项目位置
默认情况下,项目的路径和项目在文件系统中的目录位置是一致的,比如projectA:child对应的目录地址为projectA/child,除非在settings.gradle中被重新定义了。同时,项目路径默认都是相对路径。
根项目
在默认情况下