【问题标题】:Gradle global variable not in scope within buildscriptGradle 全局变量不在 buildscript 范围内
【发布时间】:2014-11-20 04:08:31
【问题描述】:

我的顶级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。

【问题讨论】:

    标签: gradle android-gradle-plugin build.gradle


    【解决方案1】:

    您可以在buildscript {...} 中使用ext 将变量定义为extra property。然后这个变量也可以在allprojects {...}的范围内访问:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 听起来像是疏忽
      • 不幸的是,这是一个生命周期问题。 buildscript 闭包必须在脚本中的所有其他内容之前进行评估,因为它设置了执行脚本时使用的类路径。
      • 您也可以将属性定义移动到构建脚本中,然后它将“全局”可用。为我工作,但我只有一个 buildsript 配置,不知道它如何与多个配置一起工作。
      • @MarkVieira 我将我的财产放在gradle.properties 内,但仍然出现此错误。
      • 对我来说 gradle.properties 不是设置此类变量的好地方。我最终做的是在构建脚本中添加变量并从那里使用它们。例如:` buildscript { ext.dependency_version = "..." } dependencies { compile("groupId:artifactId:$dependency_version") } `
      猜你喜欢
      • 2016-11-13
      • 2017-03-05
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 2015-03-22
      • 1970-01-01
      相关资源
      最近更新 更多