The sample project is available here: https://github.com/TheBestPessimist/gradle-buildSrc-example/tree/8177332319743c9e3c0e49c29815666167977585 and is a kotlin + spring boot project.
I want to have a “common gradle project” that i apply to my subprojects.
It is found at:
buildSrc/src/main/kotlin/land/tbp/wwsc/tralala.gradle.kts and it applies multiple plugins, one of which is
In order to set the versions of these plugins, i need to add the plugins as dependencies inside the file
buildSrc/src/main/kotlin/land/tbp/wwsc/Versions.kt where i want to store all my versions. this also includes plugins.
I want to do this because the dependency
implementation(platform("org.springframework.boot:spring-boot-dependencies:$springBootVersion")) (here) must have the same version as the one of the plugin that is applied.
The problem is that i cannot access
import land.tbp.wwsc.Versions.springBootVersion from
buildSrc/build.gradle.kts, so what i need to do is duplicate the properties which store the versions inside
buildSrc/build.gradle.kts as well, and whenever i have to update a version, i need to so that in 2 places.
buildSrc/build.gradle.kts -> springBootVersion
buildSrc/src/main/kotlin/land/tbp/wwsc/Versions.kt -> Versions.springBootVersion
My question is: is there a way to have the cake and eat it too?
Is there a way to use the object
buildSrc/src/main/kotlin/land/tbp/wwsc/Versions.kt everywhere? Or is there an alternative which does not lead to code duplication?