我的顶级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
}
}
}
这是错误
Could not find property 'repo' on org.gradle.api.internal.artifacts.repositories.DefaultMavenArtifactRepository_Decorated@718afa64.
因此它适用于allprojects
但不适用于buildscript
。
答案 0 :(得分:9)
您可以在ext
中将变量定义为extra property buildscript {...}
。然后,也可以在allprojects {...}
:
buildscript {
ext {
repo = "https://my-artifactory-repo"
}
repositories {
maven {
url repo // works
}
}
}
allprojects {
repositories {
maven {
url repo // works
}
}
}
答案 1 :(得分:5)
这种情况正在发生,因为始终首先评估buildscript {...}
配置闭包,因此尚未定义该属性。解决方法是在构建脚本之外定义属性,方法是将其放在gradle.properties
文件中或通过命令行。