Spring Boot升级后Maven依赖异常:Project B未加载(显示无测试代码)
解决Spring Boot 3.x + Java 17下Maven依赖Project B未加载JAR的问题
可能原因及对应解决步骤
1. 检查Project B的Maven打包配置
- 确认Project B的
pom.xml中打包类型为JAR:<packaging>jar</packaging> - 排查
maven-jar-plugin配置,确保没有意外排除主代码目录:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.3.0</version> <!-- 适配Spring Boot 3.x的版本 --> <configuration> <!-- 无排除主源码的<excludes>配置 --> </configuration> </plugin> - 执行
mvn clean install,确认Project B的target目录生成了包含主代码的完整JAR包(大小符合预期)。
2. 检查Project A的依赖配置
- 确认Project A的
pom.xml中依赖Project B的坐标完全正确,且无错误的作用域配置:<dependency> <groupId>com.yourgroup</groupId> <artifactId>project-b</artifactId> <version>x.y.z</version> <!-- 避免误加<scope>test</scope>导致依赖仅在测试环境生效 --> </dependency> - 检查
dependencyManagement节点,确保Project B的版本未被错误覆盖或冲突。
3. STS IDE缓存与同步问题
- 执行STS的
Maven -> Update Project操作,勾选Force Update of Snapshots/Releases重新同步依赖。 - 清理STS工作区缓存:依次点击
Window -> Preferences -> General -> Workspace,点击Clean按钮;同时删除Maven本地仓库中Project B的对应目录(一般在~/.m2/repository/com/yourgroup/project-b/),重新执行mvn clean install。 - 确认Project B的项目配置:右键Project B ->
Properties -> Project Facets,确保Java版本设为17,Spring Boot版本匹配3.2.6,且项目类型为Maven JAR项目。
4. Spring Boot 3.x Maven插件适配
- 确保Project B的
pom.xml中Spring Boot Maven插件版本与Spring Boot版本一致:<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>3.2.6</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> - 若Project B是普通JAR(非Spring Boot应用),移除
spring-boot-maven-plugin的repackage目标,避免打包成可执行JAR导致依赖识别异常。
5. Java 17模块系统影响(若启用JPMS)
- 确认Project B的
module-info.java正确导出需被Project A访问的包:module com.yourgroup.projectb { exports com.yourgroup.projectb.service; // 按需导出其他业务包 } - Project A的
module-info.java需声明对Project B的依赖:module com.yourgroup.projecta { requires com.yourgroup.projectb; }
内容的提问来源于stack exchange,提问作者Rohan Sabale
相关产品推荐
相关产品推荐

