Maven 如何配置集成测试加载src/test/resources下的application-integration.properties
根本原因
Spring Boot Maven 插件在pre-integration-test阶段执行start目标启动测试实例时,默认类路径仅包含主代码编译输出目录target/classes(对应src/main/resources的资源路径),不会主动将测试代码编译输出目录target/test-classes(对应src/test/resources的资源路径)纳入类路径加载序列,因此移动配置文件位置后会出现读取不到的问题。
落地配置修改
方法1:调整启动类路径优先级(最小改动)
直接修改现有插件配置中的jvmArguments参数,将测试资源编译目录放到类路径最前端,确保优先从测试目录加载配置:
<jvmArguments> -Dspring.application.admin.enabled=true -cp target/test-classes;target/classes </jvmArguments>
系统适配提示:Windows 系统类路径分隔符使用
;,Linux/macOS 环境请将分隔符替换为:。
方法2:显式指定配置加载位置(强可控)
如果不想通过类路径顺序控制加载逻辑,可以通过Spring内置配置参数直接指定集成环境配置文件的读取路径,完全跳过默认扫描逻辑:
<jvmArguments> -Dspring.application.admin.enabled=true -Dspring.config.additional-location=classpath:/application-integration.properties </jvmArguments>
配合类路径调整后,该参数会强制插件从测试资源类路径下定位集成配置,不会误读src/main/resources下的旧配置。
验证方式
修改完成后执行带integration profile的测试命令:mvn verify -Pintegration
查看应用启动日志中的配置加载条目,确认application-integration.properties的加载来源为target/test-classes目录即配置生效。
额外注意:请确认
src/main/resources下已经没有遗留的application-integration.properties文件,避免旧配置触发加载冲突。
内容的提问来源于stack exchange,提问作者PatPanda

