Kotlin Multiplatform项目Quarkus依赖shared模块构建报错求助
问题原因
Quarkus Gradle插件默认针对标准JVM项目设计,无法自动解析Kotlin Multiplatform(KMM)模块的多变体结构;而ComposeApp模块本身属于KMM生态,Gradle的变体解析机制会自动适配依赖,因此出现依赖行为差异。
解决方案
1. 确保Shared模块的JVM目标配置正确
在shared/build.gradle.kts中,确认JVM目标已正确配置并生成标准JVM可识别的构件:
plugins { kotlin("multiplatform") // 按需保留android-library等其他插件 } kotlin { jvm { compilations.all { kotlinOptions.jvmTarget = "17" // 需与Quarkus要求的JVM版本一致(Quarkus 3.x建议用17+) } withJava() // 启用Java互操作,确保生成标准JVM JAR tasks.jar { from(compilations["main"].output) // 确保JAR包含KMM jvmMain的编译输出 } } // 保留现有Android等其他平台目标配置 android { // ...你的现有配置 } sourceSets { val commonMain by getting val jvmMain by getting { // 配置jvmMain的依赖项 } val androidMain by getting // ...其他sourceSet配置 } }
2. 修改Quarkus模块的依赖方式
在quarkus/build.gradle.kts中,替换直接依赖为指定JVM变体的依赖:
plugins { id("io.quarkus") } quarkus { // 你的Quarkus配置 } dependencies { // 方式1:直接引用shared的jvmMain变体 implementation(projects.shared.jvmMain.get()) // 方式2:通过能力匹配指定JVM变体(更规范的变体依赖方式) /* implementation(projects.shared) { capabilities { requireCapability("${projects.shared.group}:shared-jvm") // 替换group为你的项目group,shared为模块名 } } */ }
3. 验证与排查
- 先单独构建shared模块的JVM构件:执行
./gradlew shared:jvmJar,确认生成shared/build/libs/shared-jvm-<version>.jar - 检查Quarkus插件版本与Kotlin版本兼容(Quarkus 3.x建议搭配Kotlin 1.8.20+)
- 若仍有问题,可临时使用本地JAR依赖验证:
implementation(files("../shared/build/libs/shared-jvm-<your-version>.jar"))
内容的提问来源于stack exchange,提问作者jasondlee
相关产品推荐
相关产品推荐

