Gradle如何找到setings.gradle文件

时间:2015-05-14 10:47:48

标签: gradle

在正常项目中,我可以有这样的结构:

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

1 个答案:

答案 0 :(得分:1)

settings.gradle文件有以下两个主要目的:

  1. 将库添加到构建脚本类路径
  2. 定义哪些项目参与多项目构建
  3. 因此,对于单项目构建,它是可选的,但由于#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会找到并使用它。