gpt4 book ai didi

gradle - 如何使Kotlin Gradle插件不管理版本

转载 作者:行者123 更新时间:2023-12-03 03:26:08 25 4
gpt4 key购买 nike

当我使用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 = trueenforce特定版本:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com