Version control plugins. BOM for plugins?

Hi. we have around 100 microservice and 10 teams, that develop them. Еechnology stack is almost the same.
When one team wants to use the new version of the plugin, it spends some time to embed it in its project, then some more time to embed it in the remaining 9 of its projects. Then another team wants to use the new version and also spends time.
We use a shared BOM, and it’s very cool! but BOM cannot manage plugin versions, so now teams are still wasting time checking plugin and dependency compatibility.

My research only allowed me to develop the following dependency management method:
I create a custom plugin(plugin-version). In it, I

  1. include shared BOM
  2. create a file Version
open class Versions {
   val Detekt = "1.2.1"
   val Spring = "2.2.4"
  1. configure the default values for our commands through the reflection for other plugins extensions .
p.plugins.withId("io.gitlab.arturbosch.detekt") {
                    val deteckt = p.extensions.getByName("detekt")
                    deteckt::class.memberProperties.first { == "debug" }.let { property ->
                        if (property is KMutableProperty<*>) {
                  , true)
                            println("Set property 'debug' on value 'true' in PluginVersion ")

In project i create folder buildSrc in which apply mu custom plugin as dependency.

    dependencies {

and create crutch file PluginVersion.kt

object PluginVersion : ru.tinkoff.bpm.plugin.Versions()

After this i can use PluginVersion in buildSrc like

    plugins {
        id("io.gitlab.arturbosch.detekt") version PluginVersion.Detekt


  1. It’s work
  2. I have one place responsible for versions all plugins, dependency and default value o plugin extention
  3. I can use plugin versions different from the version in my Version plugin(upgrade/downgrade versions)
  4. I can configure extents of other plugins in buils.kts if i wont some custom


  1. It’s work only for Kotlin, and don’t work on Groovy
  2. It need buildSrc folder
  3. When i click on class PluginVersion in module1 i see only bite code, and IDEA don’t wont decompile it, and i can’t see current version of plugin.

I would be glad if someone talked about a simpler way to control plugin versions or told how to improve the current one (get rid of the PluginVersion.kt class and buildSrc folder)