何时使用gradle.properties与settings.gradle?

ams*_*ams 66 java build build-system gradle

gradle构建有三个文件

  • build.gradle 定义构建配置脚本
  • gradle.properties
  • settings.gradle

问题

  • settings.gradle&之间有什么区别gradle.properties
  • 当应在设置中把settings.gradle主场迎战 gradle.properties

Luk*_*fer 69

settings.gradle文件就像settings.gradle文件一样,是一个Groovy脚本.build.gradle每个构建中只执行一个脚本(与settings.gradle多项目构建中的脚本相比).它将在任何实例build.gradle之前执行,甚至在settings.gradle创建实例之前执行.因此,它针对build.gradle对象进行评估.使用此Project对象,您可以将子项目添加到构建中,从命令行(Settings)修改参数并访问该Settings对象以注册生命周期处理程序.如果您的设置与构建相关且不一定与项目相关或包含可能的子项目之前需要逻辑,请使用该文件.

StartParameter文件是一个简单的Java Gradle文件,它只通过自动包含在settings.gradle对象的范围内(作为所谓的项目属性)来获得特殊的角色.它是一个简单的键值存储,只允许字符串值(因此您需要自己拆分列表或数组).您可以将gradle.properties文件放到这些位置:

  • 直接在项目目录中(与项目相关的值)
  • 在用户主gradle.properties目录中(对于用户或环境相关的值)


tkr*_*use 48

多模块项目有一个主模块和许多子模块.它有这样的布局:

(root)
  +- settings.gradle       
  +- build.gradle          # optional (commonly present)
  +- gradle.properties     # optional
  +-- buildSrc/            # optional
  |     +- build.gradle    # optional
  |     +-- src/           # optional
  |     +-- test/          # optional
  +-- gradle/              # optional
  |     +- utils.gradle    # optional
  +-- sub-a/
  |     +- build.gradle
  |     +- src/
  +-- sub-b/
        +- build.gradle
        +- src/
Run Code Online (Sandbox Code Playgroud)

子模块也可以位于子文件夹的更深处,但是如果不修改settings.gradle中的代码,它们的名称将包含此类文件夹的名称.

settings.gradle

settings.gradle的主要作用是定义所有包含的子模块并标记模块树的目录根,因此settings.gradle在多模块项目中只能有一个文件.

rootProject.name = 'project-x'

include 'sub-a', 'sub-b'
Run Code Online (Sandbox Code Playgroud)

设置文件也是用groovy编写的,子模块查找可以很多调整.

的build.gradle

每个模块有一个这样的文件,它包含该模块的构建逻辑.

主模块build.gradle文件中,您可以使用或定义所有其他模块的设置.allprojects {}subprojects {}

build.gradle子模块的文件中,您可以使用compile project(':sub-a')一个子模块依赖于另一个子模块.

gradle.properties

这是可选的,它的主要目的是提供用于运行gradle本身的启动选项,例如

org.gradle.jvmargs=-Xmx=... -Dfile.encoding=UTF-8 ...
org.gradle.configureondemand=true
Run Code Online (Sandbox Code Playgroud)

gradle产出/ utils.gradle

(可以使用文件夹或文件的任何名称.)您可以定义其他自定义gradle文件以重用定义,并将它们包含在其他gradle文件中

apply from: "$rootDir/gradle/utils.gradle"
Run Code Online (Sandbox Code Playgroud)

buildSrc/...

这个文件夹很特别,就像一个单独的gradle项目本身.它是在做任何其他事情之前构建的,并且可以提供在任何其他gradle文件中使用的函数.您可以在java,groovy或kotlin中定义复杂的自定义构建逻辑,而不是编写和部署插件.这对于自定义构建代码的单元测试也很有用,因为您可以进行单元测试.