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

使用spring-boot-maven-plugin的repackage时找不到Spring Boot类

Spring Boot多模块Maven构建:集成测试找不到应用类的问题

我创建了一个示例项目来复现问题,这是一个Maven多模块(反应堆)项目,仅包含两个核心部分:

  • my-project-application模块中的Spring Boot应用类MyProjectApplication
  • my-project-integrationtest模块中的Spring Boot测试类MyProjectFacadeIntegrationTest

项目目录结构如下:

testing-spring-boot-app (根/父Maven模块)
|- my-project-application (Maven模块)
| \- src/main/java/org/myproject/MyProjectApplication.java
\- my-project-integrationtest (Maven模块)
  \- src/test/java/org/myproject/MyProjectFacadeIntegrationTest.java

my-project-integrationtest模块依赖my-project-application模块,集成测试类MyProjectFacadeIntegrationTest需要借助MyProjectApplication来启动Spring Boot应用。

在IDE中执行测试完全正常,但用Maven构建时却出现编译错误,提示找不到MyProjectApplication类,错误日志如下:

[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /C:/tmp/testing-spring-boot-app/my-project-integrationtest/src/test/java/org/myproject/MyProjectFacadeIntegrationTest.java:[7,40] cannot find symbol
  symbol:   class MyProjectApplication
  location: package org.myproject
[INFO] 1 error
[INFO] -------------------------------------------------------------

经过排查,这个问题和spring-boot-maven-plugin直接相关——我们的真实项目必须使用这个插件,但如果注释掉my-project-application/pom.xml中插件配置的repackage目标,Maven构建就能正常运行。

我想请教几个问题:

  1. 为什么会出现这种情况?
  2. repackage目标到底执行了哪些操作?
  3. 这种行为是插件的预期设计吗?有没有解决方案或变通方法,能让我在保留repackage目标的前提下正常运行集成测试?

PS:当然,我可以把Spring Boot测试放在应用模块里,这样一切都能正常工作。但我的真实项目规模很大,包含多个Maven模块,单独用一个模块来存放Spring Boot应用是合理的(它包含了真实应用的所有依赖等)。所以请不要建议我把测试类移到应用模块中;-)

内容的提问来源于stack exchange,提问作者Chris Brown

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:23:11