Gradle 6迁移settings.gradle.kts

时间:2019-12-12 11:38:32

标签: gradle

我在settings.gradle.kts中有以下代码,在gradle 5中可以正常使用

rootProject.name = "server"

val pluginsRepoUrl: String by settings
val repoUsername: String by settings
val repoPassword: String by settings

pluginManagement {
    repositories {
        maven {
            url = uri(pluginsRepoUrl)
            credentials {
                username = repoUsername
                password = repoPassword
            }
        }
    }
}

我想升级到gradle 6,但是此代码不起作用,并给我以下错误:

e: .../settings.gradle.kts:10:23: Unresolved reference: pluginsRepoUrl

这些值来自gradle.properties文件。

1 个答案:

答案 0 :(得分:4)

在Gradle 6中,the behavior of the pluginManagement {} block was changed

以前,设置脚本中的所有pluginManagement {}块都是在脚本正常执行期间执行的。

现在,它们以与buildscript {}plugins {}类似的方式更早地执行。 这意味着该代码块中的代码无法引用脚本中其他地方声明的任何内容。

(重点是我的)

这意味着您不能引用在该块外部声明的变量。要解决此问题,请将这些声明移至pluginManagement {}块内:

pluginManagement {
    val pluginsRepoUrl: String by settings
    val repoUsername: String by settings
    val repoPassword: String by settings
    repositories {
        ...