如何在Gradle平台BoM中添加KMP JVM目标依赖?
解决Kotlin多平台项目BoM包含全平台构件的问题
你当前用java-platform插件生成的BoM只包含根构件(如io.ktor:ktor-client-core:3.0.3),是因为该插件默认只会识别KMP项目的根模块构件,不会自动包含各平台专属的带后缀变体(如-jvm)。要同时包含两种构件,需要手动在约束中添加各平台的构件依赖:
修改后的Gradle配置示例
plugins { `java-platform` } javaPlatform { allowDependencies() } dependencies { constraints { // 添加根构件 api(project(":ktor-client-core")) // 添加JVM平台专属构件,版本和根构件保持一致 api("io.ktor:ktor-client-core-jvm:3.0.3") // 如果还有其他平台(如JS、Native),按需添加对应构件 // api("io.ktor:ktor-client-core-js:3.0.3") // api("io.ktor:ktor-client-core-linuxx64:3.0.3") } } apply(from = file("../../gradle/publish-pom.gradle.kts"))
补充说明
- 若项目使用统一版本管理(比如通过
version catalog或项目级变量),可以把硬编码的版本替换为变量,避免版本不一致:val ktorVersion = "3.0.3" api("io.ktor:ktor-client-core-jvm:$ktorVersion") - 目前
java-platform插件没有原生支持自动收集KMP项目的所有平台变体,所以需要手动枚举所有需要包含的平台构件。
内容的提问来源于stack exchange,提问作者Pokimon
相关产品推荐
相关产品推荐

