Kotlin 版本控制插件。插件的BOM?

Kotlin 版本控制插件。插件的BOM?,kotlin,gradle,gradle-plugin,gradle-kotlin-dsl,maven-bom,Kotlin,Gradle,Gradle Plugin,Gradle Kotlin Dsl,Maven Bom,我们有大约100个微服务和10个开发团队。技术堆栈几乎相同。 当一个团队想要使用新版本的插件时,它会花一些时间将其嵌入到其项目中,然后再花一些时间将其嵌入其余9个项目中。然后,另一个团队想要使用新版本,并花费时间。 我们使用一个共享BOM表,这很酷!但是BOM不能管理插件版本,所以现在团队仍然在浪费时间检查插件和依赖项的兼容性 我的研究只允许我开发以下依赖关系管理方法: 我创建了一个自定义插件(插件版本)。在里面,我 1) 包括共享BOM表 2) 创建一个文件版本 open class Vers

我们有大约100个微服务和10个开发团队。技术堆栈几乎相同。 当一个团队想要使用新版本的插件时,它会花一些时间将其嵌入到其项目中,然后再花一些时间将其嵌入其余9个项目中。然后,另一个团队想要使用新版本,并花费时间。 我们使用一个共享BOM表,这很酷!但是BOM不能管理插件版本,所以现在团队仍然在浪费时间检查插件和依赖项的兼容性

我的研究只允许我开发以下依赖关系管理方法: 我创建了一个自定义插件(插件版本)。在里面,我

1) 包括共享BOM表

2) 创建一个文件版本

open class Versions {
   val Detekt = "1.2.1"
   val Spring = "2.2.4"
}
3) 通过其他插件扩展的反射为我们的命令配置默认值

p.plugins.withId("io.gitlab.arturbosch.detekt") {
                    val deteckt = p.extensions.getByName("detekt")
                    deteckt::class.memberProperties.first { it.name == "debug" }.let { property ->
                        if (property is KMutableProperty<*>) {
                            property.setter.call(deteckt, true)
                            println("Set property 'debug' on value 'true' in PluginVersion ")
                        }
                    }
                }
并创建crutch文件PluginVersion.kt

object PluginVersion : my.plugin.Versions()
在此之后,我可以像buildSrc一样使用PluginVersion 根/buildSrc

plugins {
    kotlin("jvm")
    id("io.gitlab.arturbosch.detekt") version PluginVersion.Detekt
}
加上:

  • 这是工作
  • 我有一个地方负责所有插件的版本、依赖项和插件扩展的默认值
  • 我可以使用不同于我版本插件中版本的插件版本(升级/降级版本)
  • 如果我不想定制,我可以在buils.kts中配置其他插件的扩展
  • 减:

  • 它只适用于Kotlin,而不适用于Groovy
  • 它需要buildSrc文件夹
  • 当我点击模块1中的类PluginVersion时,我只看到bite代码,IDEA不会对其进行反编译,也看不到插件的当前版本
  • 如果有人谈论一种更简单的方法来控制插件版本,或者告诉我如何改进当前版本(去掉plugininversion.kt类和buildSrc文件夹),我会很高兴

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