Kotlin 版本控制插件。插件的BOM?
我们有大约100个微服务和10个开发团队。技术堆栈几乎相同。 当一个团队想要使用新版本的插件时,它会花一些时间将其嵌入到其项目中,然后再花一些时间将其嵌入其余9个项目中。然后,另一个团队想要使用新版本,并花费时间。 我们使用一个共享BOM表,这很酷!但是BOM不能管理插件版本,所以现在团队仍然在浪费时间检查插件和依赖项的兼容性 我的研究只允许我开发以下依赖关系管理方法: 我创建了一个自定义插件(插件版本)。在里面,我 1) 包括共享BOM表 2) 创建一个文件版本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
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
}
加上:
plugins {
kotlin("jvm")
id("io.gitlab.arturbosch.detekt") version PluginVersion.Detekt
}