Groovy 如何包括;“全球”;格拉德尔的档案

Groovy 如何包括;“全球”;格拉德尔的档案,groovy,gradle,Groovy,Gradle,我有多个项目具有自己的build.gradle和settings.gradle。 我想在其中一个项目中添加一个名为build.gradle(或其他名称,这无关紧要)的“全局”文件,我的问题是:如何包含所有其他项目中的新文件(build.gradle或setting.gradle文件)?我认为您无法为设置.gradle执行此操作,但您可以使用 apply from: "$rootDir/../OtherProject/path/to/your.gradle" 此特定示例假定项目根目录包含在单个目

我有多个项目具有自己的
build.gradle
settings.gradle

我想在其中一个项目中添加一个名为
build.gradle
(或其他名称,这无关紧要)的“全局”文件,我的问题是:如何包含所有其他项目中的新文件(
build.gradle
setting.gradle
文件)?

我认为您无法为
设置.gradle
执行此操作,但您可以使用

apply from: "$rootDir/../OtherProject/path/to/your.gradle"
此特定示例假定项目根目录包含在单个目录中

当然,由于在项目之间加载原始文件,将加载来自OtherProject/settings.gradle的非定义,因此加载的文件中的引用可能会失败,除非它是真正全局的

但是,您可能想考虑使用和重组您的项目,以使它们更逻辑地组合在一起,而不是在不同项目之间硬创建构建脚本。

此外,如果您试图在项目之间共享常见任务等,请考虑将它们转换为插件,并将其包含在需要功能的每个项目中。

编辑:显示项目之间的链接

要访问全局值,请使用
ext
。有关更多示例,请参见

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
}
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

现在我只想处理依赖项,在global build.gradle文件中,我想声明一个名为“x”的映射变量。其中包含所有类似这样的jar:commons_codec:“commons codec:commons codec:1.5”。现在,在另一个build.gradle中,我想对x进行修改,我如何处理它?它抛出一个错误,它不知道xI已经添加了一些带有各种示例的代码,并链接了
ext
文档供您进一步操作reading@Avra很高兴我能帮上忙