如何解决引入Exposed依赖的Kotlin多平台库构建失败问题
问题根因
你遇到的报错本质是0.34.1版本的Exposed未发布Kotlin多平台(KMP)兼容的构件,在commonMain中引入JVM专属坐标时,Gradle无法匹配对应平台构件,进而拉取不存在的分类器包导致报错。
解决方案
1. 升级Exposed到支持KMP的版本
Exposed从0.37.0版本开始正式支持Kotlin多平台,优先选择最新稳定版即可,无需使用低版本。
2. 修正Gradle依赖配置
调整commonMain和对应平台的依赖声明,使用Exposed KMP专属坐标:
sourceSets { val commonMain by getting { dependencies { // KMP版本核心依赖 implementation("org.jetbrains.exposed:exposed-core-kmp:0.49.0") // 如需DAO能力可额外加这个KMP依赖 implementation("org.jetbrains.exposed:exposed-dao-kmp:0.49.0") } } val commonTest by getting { dependencies { implementation(kotlin("test")) } } // JVM平台单独引入JDBC相关依赖 val jvmMain by getting { dependencies { implementation("org.jetbrains.exposed:exposed-jdbc:0.49.0") // 可按需添加对应数据库的JDBC驱动,例如MySQL: // implementation("mysql:mysql-connector-java:8.0.33") } } val jvmTest by getting val jsMain by getting val jsTest by getting val nativeMain by getting val nativeTest by getting }
3. 确认仓库配置正确
检查项目根目录的settings.gradle.kts或者模块级build.gradle.kts中的仓库配置,必须包含Maven Central:
repositories { mavenCentral() // 如需使用快照版本可额外添加JetBrains专属仓库: // maven("https://maven.pkg.jetbrains.space/public/p/exposed/exposed") }
特殊场景:必须使用0.34.1旧版本的适配方案
如果项目受限制无法升级Exposed版本,该版本仅支持JVM平台,不能放在commonMain中声明依赖:
- 把Exposed相关依赖仅添加到
jvmMain的依赖列表中 - common层抽离数据库操作的抽象接口,JVM层用Exposed实现接口逻辑即可
内容的提问来源于stack exchange,提问作者Kyle M
相关产品推荐
相关产品推荐

