c0nsigliere
c0nsigliere

Reputation: 95

Gradle 6 settings.gradle.kts properties problem

please help me understand what was changed in Gradle 6 so the following code doesn't work anymore (worked well in 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
            }
        }
    }
}

Now I have an error: "Unresolved reference: artifactoryUser".

This problem can be solved by moving properties declaration inside the pluginManagement block

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

But I don't understand why.

Upvotes: 6

Views: 1527

Answers (2)

Costi Muraru
Costi Muraru

Reputation: 2065

Indeed, moving the val inside the pluginManagement block does the trick, when migrating from Gradle 5.x to Gradle 6.x.

val kotlinVersion: String by settings

pluginManagement {
...
}

to:

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

Upvotes: 1

Bjørn Vester
Bjørn Vester

Reputation: 7600

The reason for it is mentioned in the Grade 6 upgrade notes :

The pluginManagement block in settings scripts is now isolated

Previously, any pluginManagement {} blocks inside a settings script were executed during the normal execution of the script.

Now, they are executed earlier in a similar manner to buildscript {} or plugins {}. This means that code inside such a block cannot reference anything declared elsewhere in the script.

This change has been made so that pluginManagement configuration can also be applied when resolving plugins for the settings script itself.

Upvotes: 5

Related Questions