如何包括"全球" gradle

时间:2015-07-23 09:20:05

标签: groovy gradle

我有多个项目拥有自己的build.gradlesettings.gradle。 我想添加一个"全球"文件名为build.gradle(或其他名称,它很重要)到项目的一个,我的问题是:我如何包含来自所有其他项目的新文件( build.gradlesetting.gradle个文件)?

1 个答案:

答案 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