Gradle如何找到setings.Gradle文件

Gradle如何找到setings.Gradle文件,gradle,Gradle,在普通项目中,我可以有如下结构: myProject/ build.gradle gradle.properties **settings.gradle** 但如果我有另一个项目 myProject2/ build.gradle gradle.properties 它很好用 当myProject2是myProject的子文件夹(但不是子项目)时,事情会变得很奇怪 myProject/ myProject2/ build.grad

在普通项目中,我可以有如下结构:

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如何找到要使用的设置文件?

设置。gradle文件有以下两个主要用途:

  • 将库添加到构建脚本类路径
  • 定义哪些项目正在参与多项目生成
  • 因此,它对于单个项目构建是可选的,但由于#2,它对于多项目构建是强制性的

    默认情况下,假定设置文件的位置也是根项目的位置,但您可以在设置文件中重新定义根项目的位置

    现在,gradle逻辑用于定位gradle用户指南中记录的
    设置.gradle
    文件:

    如果从具有设置的目录触发多项目生成 文件,事情很简单[Amnon-您刚刚找到它]

    如果从没有settings.Gradle文件的项目中执行Gradle,Gradle将按以下方式查找settings.Gradle文件:

    • 它在名为master的目录中查找,该目录具有相同的嵌套级别 作为当前目录

    • 如果尚未找到,它将搜索父目录

    • 如果尚未找到,则生成将作为单个项目生成执行。如果 如果找到settings.gradle文件,gradle将检查当前项目 是在中定义的多项目层次结构的一部分 settings.gradle文件

    • 如果不是,则生成将作为单个 项目建设。否则将执行多项目构建。否则 (你处决了格雷德尔

    (Gradle用户指南还提供了此行为的目的


    现在,回到您的案例,您提供的前两个项目布局是针对单个项目构建的,因此
    设置。gradle
    是可选的。对于第三个项目布局,如果您从根项目(myProject)运行gradle然后它会在它旁边找到
    settings.gradle
    ,但如果您从
    myProject2
    文件夹运行它,那么由于此项目父路径包含一个
    settings.gradle
    文件,gradle会找到它并使用它。

    事情是如何“变得奇怪”的@Cinch myProject2似乎使用了父目录的settings.gradle文件,而不是什么(我期望的)伟大的东西。我找不到说它搜索了父目录的文档。@wrossmck