KMM问题:无法从其他模块引用shared模块commonMain源码集类
在Quarkus Kotlin项目中,已通过Gradle引入:shared模块依赖,但无法导入该模块中的类,IDE仍提示需添加相同依赖。
当前Gradle配置(主模块)
plugins { kotlin("jvm") version "1.8.20" kotlin("plugin.allopen") version "1.8.20" id("io.quarkus") } repositories { mavenCentral() mavenLocal() } val quarkusPlatformGroupId: String by project val quarkusPlatformArtifactId: String by project val quarkusPlatformVersion: String by project dependencies { // 移除该配置会报错,因此保留 implementation(project(path = ":shared", configuration = configurations.default.name)) // ...其他依赖 } // ...其他配置
解决步骤
1. 检查Shared模块的Gradle配置
- 确保
:shared模块是标准的JVM可依赖库:- 插件中需包含
kotlin("jvm"),如果是Quarkus模块,需确认其输出Jar可被其他模块引用。Quarkus默认的quarkusBuild任务生成的是运行时优化Jar,可能需要配置java-library插件来管理api/implementation依赖,或者指定正确的依赖配置。 - 若
:shared是Quarkus模块,尝试将主模块的依赖配置改为:
或implementation(project(":shared", "apiElements"))implementation(project(":shared", "quarkusRuntime"))
- 插件中需包含
2. 清理并刷新Gradle缓存
- 执行本地Gradle命令,清理构建缓存并刷新依赖:
./gradlew clean build --refresh-dependencies - 在IDE中执行Gradle项目刷新(如IntelliJ点击Gradle面板的刷新按钮)
3. 修复IDE同步问题
- 若使用IntelliJ IDEA,尝试清理IDE缓存并重启:
File -> Invalidate Caches... -> 选择Invalidate and Restart
- 查看Gradle控制台或IDE Event Log,确认是否有未发现的同步错误
4. 简化依赖配置写法
- 移除
configuration = configurations.default.name,默认情况下implementation(project(":shared"))会自动使用模块的正确默认配置。如果移除后报错,优先解决:shared模块的配置问题(比如缺少必要插件、未生成可依赖的Jar),而非保留错误配置。
内容的提问来源于stack exchange,提问作者Yousef
相关产品推荐
相关产品推荐

