当我使用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
最佳答案
我无法复制它,它看起来像个错误。作为解决方法,您可以通过指定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。
关于gradle - 如何使Kotlin Gradle插件不管理版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58058949/