How to use plugin version from gradle.properties in Gradle Kotlin DSL?
There are a couple issues that have some details around this:
- gradle/kotlin-dsl#480
- gradle/gradle#1697
The way to do this in the most recent verions of Gradle is to use settings.gradle
or settings.gradle.kts
and the pluginManagement {}
block.
In your case, it could look like:
pluginManagement {
resolutionStrategy {
eachPlugin {
when (requested.id.id) {
"org.jetbrains.kotlin.plugin.allopen" -> {
val kotlinVersion: String by settings
useVersion(kotlinVersion)
}
"org.jetbrains.kotlin.jvm" -> {
val kotlinVersion: String by settings
useVersion(kotlinVersion)
}
"org.springframework.boot" -> {
val springBootPluginVersion: String by settings
useVersion(springBootPluginVersion)
}
"io.spring.dependency-management" -> {
val springDependencyManagementPluginVersion: String by settings
useVersion(springDependencyManagementPluginVersion)
}
}
}
}
}
(Cross-post: source)
Apparently this has become possible recently, if it wasn't possible in the past. (Almost) from the docs:
gradle.properties
:
helloPluginVersion=1.0.0
settings.gradle.kts
:
pluginManagement {
val helloPluginVersion: String by settings
plugins {
id("com.example.hello") version helloPluginVersion
}
}
And now the docs say that build.gradle.kts
should be empty but my testing shows that you still need this in build.gradle.kts
:
plugins {
id("com.example.hello")
}
The version is now determined by settings.gradle.kts
and hence by gradle.properties
which is what we want...