我有多个项目拥有自己的build.gradle
和settings.gradle
。
我想添加一个"全球"文件名为build.gradle
(或其他名称,它很重要)到项目的一个,我的问题是:我如何包含来自所有其他项目的新文件( build.gradle
或setting.gradle
个文件)?
答案 0 :(得分:2)
我认为您无法为settings.gradle
执行此操作,但您可以随时轻松加载其他build.gradle
文件
apply from: "$rootDir/../OtherProject/path/to/your.gradle"
这个特殊的例子假设您的项目根目录包含在一个目录中。
当然,因为你是在项目之间加载原始的,所以不会加载OtherProject / settings.gradle中的定义,因此引用可能会在加载的文件中失败,除非它本质上是全局的。
但是,您可能希望考虑使用a multiproject build并重新构建项目,以便在逻辑上将它们组合在一起,而不是在不同项目之间构建脚本。
此外,如果您尝试在项目之间共享常见任务等,请考虑将它们转换为插件,并将其包含在需要该功能的每个项目中。
编辑:显示项目之间的关联
要访问全局值,请使用ext
。有关更多示例,请参阅ext gradle docs。
Proj1 /的build.gradle:
apply from: "$rootDir/../Proj2/build.gradle"
task printX << {
# this is the full syntax
println project.ext.x
# however, anything on project.ext becomes global too, so you
# can reference it directly as just "x"
println "x[a] = ${x['a']}"
println x['b']
# showing it's just the map we expect
def keysOfX = x.keySet()
println keysOfX
}
Proj2 /的build.gradle:
ext {
x = [a: 1, b: 2]
}
运行任务:
> cd Proj1
> gradle printX
:printX
{a=1, b=2}
x[a] = 1
2
[a, b]
BUILD SUCCESSFUL
Total time: 2.894 secs