Gradle 6 settings.gradle.kts проблема со свойствами - PullRequest
5 голосов
/ 06 января 2020

, пожалуйста, помогите мне понять, что было изменено в Gradle 6, чтобы следующий код больше не работал (хорошо работал в Gradle 5):

val artifactoryUser: String by settings
val artifactoryPassword: String by settings

pluginManagement {
    repositories {
        mavenLocal()
        maven {
            url = uri("https://internal-artifactory")
            credentials {
                username = artifactoryUser
                password = artifactoryPassword
            }
        }
    }
}

Теперь у меня есть ошибка: "Неразрешенная ссылка: artifactoryUser ".

Эту проблему можно решить, переместив объявление свойств в блок управления plugin

pluginManagement {
val artifactoryUser: String by settings
val artifactoryPassword: String by settings
    repositories {
        mavenLocal()
        maven {
            url = uri("https://internal-artifactory")
            credentials {
                username = artifactoryUser
                password = artifactoryPassword
            }
        }
    }
}

Но я не понимаю, почему.

Ответы [ 2 ]

3 голосов
/ 06 января 2020

Причина указана в примечаниях к обновлению Grade 6 :

Блок pluginManagement в скриптах настроек теперь изолирован

Раньше любые блоки pluginManagement {} внутри скрипта настроек выполнялись во время обычного исполнения скрипта.

Теперь они выполняются раньше аналогично buildscript {} или плагинам {}. Это означает, что код внутри такого блока не может ссылаться на что-либо, объявленное в другом месте скрипта.

Это изменение было внесено, так что конфигурация pluginManagement также может применяться при разрешении плагинов для самого скрипта настроек.

0 голосов
/ 13 марта 2020

Действительно, перемещение val внутри блока pluginManagement делает свое дело при миграции с Gradle 5.x на Gradle 6.x.

val kotlinVersion: String by settings

pluginManagement {
...
}

на:

pluginManagement {
    val kotlinVersion: String by settings
...
}
...