在正常项目中,我可以有这样的结构:
myProject/
build.gradle
gradle.properties
**settings.gradle**
但如果我有另一个项目
myProject2/
build.gradle
gradle.properties
它工作正常。
当myProject2是myProject的子文件夹(但不是子项目)时,事情变得很奇怪。
myProject/
myProject2/
build.gradle
gradle.properties
build.gradle
gradle.properties
settings.gradle
gradle如何找到要使用的设置文件?
答案 0 :(得分:1)
settings.gradle
文件有以下两个主要目的:
因此,对于单项目构建,它是可选的,但由于#2,它对于多项目构建是必需的。
默认情况下,假设设置文件的位置也是根项目的位置,但您可以在设置文件中重新定义根项目的位置。
现在,用于查找settings.gradle
文件的gradle逻辑,如gradle用户指南 here 中所述:
如果从具有设置的目录触发多项目构建 文件,事情很容易[ Amnon - 你刚刚找到它] ......
如果您在没有settings.gradle文件的项目中执行Gradle,Gradle将按以下方式查找settings.gradle文件:
它在名为master的目录中查找,该目录具有相同的嵌套级别 作为当前的目录。
如果尚未找到,则会搜索父目录。
如果尚未找到,则构建将作为单个项目构建执行。如果 找到settings.gradle文件,Gradle检查当前项目 是找到的多项目层次结构的一部分 settings.gradle文件。
- 执行了Gradle
如果没有,则构建将作为单个执行 项目建设。否则,执行多项目构建。除此以外 (你从
(Gradle用户指南还提供了此行为的目的 here )。
现在,回到您的情况,您提供的前两个项目布局是针对单个项目构建的,因此settings.gradle
是可选的。对于你的第三个项目布局,如果你将从根项目(myProject)运行gradle,那么它会在它旁边找到settings.gradle
但如果你将从myProject2
文件夹运行它,那么从这个项目的父路径包含settings.gradle
文件,gradle会找到并使用它。