You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin Multiplatform项目Quarkus依赖shared模块构建报错求助

解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 22:42:31