Maven多模块项目执行mvn install报错包不存在但实际存在
问题根因及解决方案
1. 核心配置错误:groupId不匹配
你父POM的dependencyManagement中配置的client-a依赖groupId为com.stuff,但你在controller模块中声明依赖时用的groupId是com.stuff.clienta,二者完全不匹配,导致Maven无法正确解析client-a的版本,相当于依赖未生效,自然找不到对应包。
修改controller模块的依赖配置为和父POM一致即可:
<dependency> <groupId>com.stuff</groupId> <artifactId>client-a</artifactId> </dependency>
如果client-a模块自身的POM中groupId确实是com.stuff.clienta,则反过来修改父POMdependencyManagement中client-a的groupId为com.stuff.clienta即可,保证两处配置完全一致。
2. 其他可能的排查项
如果修改groupId后仍然报错,按以下顺序排查:
- 检查
client-a模块自身的打包类型,必须为jar,如果配置成pom不会生成包含类文件的jar包,无法被其他模块依赖 - 检查
client-a模块的构建插件配置:如果加了spring-boot-maven-plugin的repackage目标,打包生成的是Spring Boot可执行jar,类文件存放在BOOT-INF/classes目录下,其他普通模块无法读取到类。如果client-a是公共依赖模块,移除该插件的repackage配置即可 - 进入
client-a模块目录单独执行mvn clean install,然后到本地Maven仓库对应路径下找到client-a的jar包,解压确认是否存在com/stuff/clienta/ClientAClass类文件,排除类未正确编译打包的问题
内容的提问来源于stack exchange,提问作者capa_matrix
相关产品推荐
相关产品推荐

