当我使用Kotlin Gradle插件并同时使用Kotlin BOM时,似乎插件版本优先使用kotlin-stdlib
,如何使插件不管理我的依赖关系?
plugins {
kotlin("jvm") version "1.2.50"
}
dependencies {
implementation(platform("some-bom:0.3")) // this has API dependency to kotlin-bom 1.3.50
implementation(kotlin("stdlib")) // this resolves to 1.2.50 (plugin version) instead of 1.3.50 (BOM version)
}
项目正在使用Gradle 5.2.1
答案 0 :(得分:0)
我无法复制它,它看起来像个错误。解决方法是,您可以通过指定isForce = true
enforce特定版本:
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.2.50") {
isForce = true
}
implementation("org.jetbrains.kotlin:kotlin-stdlib-common:1.3.10"){
isForce = true
}
isForce
不是可传递的,因此必须使用isForce
标志true显式指定所有可传递的kotlin依赖项,或创建一个virtual platform:
open class KotlinAlignmentRule : ComponentMetadataRule {
override fun execute(ctx: ComponentMetadataContext) {
ctx.details.run {
if (id.group == "org.jetbrains.kotlin") {
belongsTo("org.jetbrains.kotlin:kotlin-platform:${id.version}")
}
}
}
}
并将其添加到您的依赖项块中:
dependencies {
components.all(KotlinAlignmentRule::class.java)
implementation(platform("some-bom:0.3"))
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.2.50") {
isForce = true
}
}
最后一个解决方案是最好的imo。