gradle构建有三个文件
build.gradle
定义构建配置脚本gradle.properties
settings.gradle
问题
settings.gradle
&之间有什么区别? gradle.properties
?settings.gradle
vs.
gradle.properties
?答案 0 :(得分:63)
settings.gradle
settings.gradle
文件是一个Groovy脚本,就像build.gradle
文件一样。每个构建中只会执行一个settings.gradle
脚本(与多项目构建中的多个build.gradle
脚本相比)。 settings.gradle
脚本将在任何build.gradle
脚本之前执行,甚至在创建Project
实例之前执行。因此,它是针对Settings
对象进行评估的。使用此Settings
对象,您可以将子项目添加到构建中,从命令行(StartParameter
)修改参数,并访问Gradle
对象以注册生命周期处理程序。因此,如果您的设置与构建相关且不一定与项目相关,或者在包含可能的子项目之前需要逻辑,请使用settings.gradle
。
gradle.properties
gradle.properties
文件是一个简单的Java Properties
文件,它只通过自动包含在Project
对象的范围内而获得特殊角色(如所谓的'项目属性')。它是一个简单的键值存储,只允许字符串值(因此您需要自己拆分列表或数组)。您可以将gradle.properties
个文件放到这些位置:
.gradle
目录中(对于与用户或环境相关的值)答案 1 :(得分:40)
多模块项目有一个主模块和许多子模块。它有这样的布局:
(root)
+- settings.gradle
+- build.gradle
+- 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/
子模块也可以位于子文件夹的更深处,但是如果不修改settings.gradle中的代码,它们的名称将包含此类文件夹的名称。
settings.gradle的主要作用是定义所有包含的子模块并标记模块树的目录根目录,因此在多模块项目中只能有一个settings.gradle
文件。
rootProject.name = 'project-x'
include 'sub-a', 'sub-b'
设置文件也是用groovy编写的,子模块查找可以很多调整。
每个模块有一个这样的文件,它包含该模块的构建逻辑。
在主模块的build.gradle
文件中,您可以使用allprojects {}
或subprojects {}
来定义所有其他模块的设置。
在子模块的build.gradle
文件中,您可以使用compile project(':sub-a')
使一个子模块依赖于另一个子模块。
这是可选的,其主要目的是提供用于运行gradle本身的启动选项,例如
org.gradle.jvmargs=-Dfile.encoding=UTF-8 ...
org.gradle.configureondemand=true
(可以使用文件夹或文件的任何名称。) 您可以定义其他自定义gradle文件以重用定义,并通过
将它们包含在其他gradle文件中apply from: "$rootDir/gradle/utils.gradle"
这个文件夹很特别,就像一个单独的gradle项目本身。它是在做任何其他事情之前构建的,并且可以提供在任何其他gradle文件中使用的函数。 由于技术原因,IDE对此文件夹引用的支持比从多个build.gradle
文件中将公共代码提取到单独位置的任何其他方式都要好得多。
您可以在java,groovy或kotlin中定义复杂的自定义构建逻辑,而不是编写和部署插件。这对于自定义构建代码的单元测试也很有用,因为您可以进行单元测试。