Gradle全局变量不在buildscript中的范围内

Bob*_*Bob 11 gradle build.gradle android-gradle-plugin

我的顶级水平有这样的东西build.gradle(Gradle 2.2)

ext.repo = "https://my-artifactory-repo"

buildscript {
    repositories {
        maven {
            credentials {
                username foo
                password bar
            }
            url repo //doesn't work
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.14.1'

    }
}

allprojects {
    repositories {
        maven {
            credentials {
                username foo
                password bar
            }
            url repo //works
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是错误

Could not find property 'repo' on org.gradle.api.internal.artifacts.repositories.DefaultMavenArtifactRepository_Decorated@718afa64.
Run Code Online (Sandbox Code Playgroud)

所以它适用allprojects但不是buildscript.

Flo*_*ern 9

您可以定义为变量额外的属性extbuildscript {...}.然后,此变量也可在以下范围内访问allprojects {...}:

buildscript {
    ext {
        repo = "https://my-artifactory-repo"
    }
    repositories {
        maven {
            url repo // works
        }
    }
}

allprojects {
    repositories {
        maven {
            url repo // works
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*ira 5

发生这种情况是因为buildscript {...}始终首先评估配置闭包,因此尚未定义属性.解决方法是在构建脚本之外定义属性,方法是将其放在gradle.properties文件中或通过命令行.


归档时间:

查看次数:

2783 次

最近记录:

9 年,8 月 前