使用Maven编译Kotlin项目时本地依赖TBDCore报未解析引用
问题修复方案
根因分析
- TBDCore项目pom未显式指定Kotlin源码目录,
kotlin-maven-plugin默认无法正确识别纯Kotlin项目的源码路径,导致编译后jar包内仅包含shade引入的第三方依赖类,没有你编写的业务Kotlin类文件 - 可自行解压本地.m2仓库下的
dev/mrshawn/TBDCore/1.0.0/TBDCore-1.0.0.jar验证,查看是否存在你编写的业务类对应的.class文件,正常缺失即为该问题导致
修复步骤
第一步:修改TBDCore的pom.xml配置
在TBDCore的<build>标签下新增Kotlin源码目录配置,和WorldFund的配置保持一致:
<build> <!-- 新增以下行指定Kotlin源码目录 --> <sourceDirectory>src/main/kotlin</sourceDirectory> <!-- 原有plugins、resources等配置保持不变 --> ... </build>
第二步:重新构建安装TBDCore
执行构建命令:mvn clean install
构建完成后再次解压本地仓库的TBDCore jar包,确认你编写的业务类已被正确编译打包到jar内。
第三步:调整WorldFund依赖scope(可选,按需调整)
如果你部署服务时不会提前在服务端放置TBDCore的jar包,可将WorldFund中TBDCore的依赖scope从provided改为compile,这样shade插件会自动把TBDCore打包进WorldFund的最终jar包中。
第四步:重新构建WorldFund
执行构建命令:mvn clean kotlin:compile install
此时编译阶段不会再出现未解析引用的报错。
额外校验项
如果修改后仍报错,可依次检查以下配置:
- 确认两个项目的Kotlin版本完全一致(当前两个pom均为1.6.0,符合要求)
- 确认TBDCore中的类包名声明正确,WorldFund中导入的包名大小写和TBDCore完全匹配(Kotlin对包名大小写敏感)
- 确认本地.m2仓库中TBDCore的pom文件和修改后的配置一致,无旧版本缓存问题
内容的提问来源于stack exchange,提问作者MrShawn
相关产品推荐
相关产品推荐

