背景
platform-common 验收(真实 mvn verify,Testcontainers 起 PG)时发现:凡使用 spring-boot:repackage + maven-failsafe-plugin 跑集成测试的 Boot 服务,IT 会 100% 失败:
Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test
根因:spring-boot:repackage(package 阶段)把主 jar 换成可执行 fat-jar,应用类被挪到 BOOT-INF/classes/;maven-failsafe-plugin(verify 阶段)默认对该 fat-jar 取类,Spring 的 @SpringBootConfiguration 包扫描扫不到入口类 → IT 无法 bootstrap 上下文。
这是跨切坑:control-plane / governance / security / data-foundation / privacy-orch / platform-common 以及 libs-java/examples/sample-service 等凡继承本 parent、用 repackage + failsafe IT 的服务都会中。
建议(主仓统一治理)
hashmatrix-platform-parent(libs-java/pom.xml)的 pluginManagement 已管理 maven-failsafe-plugin(仅钉版本)。建议在该条目补默认 configuration,令 failsafe 扫描松散 class 目录而非 repackage 后的 fat-jar:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${maven-failsafe-plugin.version}</version>
<configuration>
<!-- repackage 把应用类挪到 fat-jar 的 BOOT-INF/classes/;failsafe 扫该 jar 会找不到
@SpringBootConfiguration。指向 target/classes(类在包根)即可命中。 -->
<classesDirectory>${project.build.outputDirectory}</classesDirectory>
</configuration>
</plugin>
落到 parent 后,各子仓无需各自发明,且可撤销本地覆盖(见下)。
关联
验收判据
背景
platform-common 验收(真实
mvn verify,Testcontainers 起 PG)时发现:凡使用spring-boot:repackage+maven-failsafe-plugin跑集成测试的 Boot 服务,IT 会 100% 失败:根因:
spring-boot:repackage(package阶段)把主 jar 换成可执行 fat-jar,应用类被挪到BOOT-INF/classes/;maven-failsafe-plugin(verify阶段)默认对该 fat-jar 取类,Spring 的@SpringBootConfiguration包扫描扫不到入口类 → IT 无法 bootstrap 上下文。这是跨切坑:
control-plane / governance / security / data-foundation / privacy-orch / platform-common以及libs-java/examples/sample-service等凡继承本 parent、用 repackage + failsafe IT 的服务都会中。建议(主仓统一治理)
hashmatrix-platform-parent(libs-java/pom.xml)的pluginManagement已管理maven-failsafe-plugin(仅钉版本)。建议在该条目补默认configuration,令 failsafe 扫描松散 class 目录而非 repackage 后的 fat-jar:落到 parent 后,各子仓无需各自发明,且可撤销本地覆盖(见下)。
关联
maven-failsafe-plugin加同款classesDirectory)解锁 M1 验收:fix: 修复集成测试无法 bootstrap(failsafe 扫 fat-jar)+ 补 PR 级 CI hashmatrix-platform-common#5。parent 修复合入并发版后,本仓可撤销该本地覆盖。mvn verify,IT 从未真正跑过。建议各 Boot 子仓同步补 PR 级mvn verify(platform-common 已在 chore: 同步 webui submodule 指针至 13db760(apps/console + apps/admin) #5 补ci.yml,可作范式)。验收判据
pluginManagement的 failsafe 补classesDirectory,发版(≥ 下一个 libs-java patch)mvn verify仍绿