Gradle 从无法访问父属性申请

Gradle apply from no access to parent properties

我有构建等级文件,我在其中外部化了一些 docker 相关操作。

我的 build.gradle 文件定义了一个 docker 图像名称。

build.gradle:

def docker = [
        imageName: "myOrg/$rootProject.name:$version",
]

apply from: 'build-config/docker.gradle'

应用的脚本包含访问 docker.imageName 变量的任务。

docker.gradle

...
task buildImage(group: "Docker", dependsOn: createDockerfile, type:Exec) {
    executable "docker"
    args 'build','-t',docker.imageName,'build'
}

现在我得到错误 Could not find property 'docker' on task ':buildImage'.

如何在应用的 gradle 脚本中使用 build.gradle 中定义的变量。

build.gradledocker变量声明中的def替换为ext.,如下:

ext.docker = [
    imageName: "myOrg/$rootProject.name:$version",
]

apply from: 'build-config/docker.gradle'

基本上 ext 命名空间用于定义项目级别的自定义属性,然后应用脚本 docker.gradle 可以访问这些属性,这也属于项目的范围。

单独使用 def,属性 可见性仅限于脚本文件。