Spring Boot无法读取依赖Maven项目中application.properties的问题
问题原因及解决办法
核心原因
Spring Boot默认不会自动读取依赖Jar包根路径下的application.properties,它只会优先加载当前启动项目(member)自身的配置文件,所以即便common项目打包包含了该配置文件,member启动时也不会主动加载。
具体排查点及解决方式
1. 配置文件加载规则问题
Spring Boot的配置文件加载优先级是:当前项目的配置 > 外部配置 > 依赖Jar中的非默认命名配置。要让依赖中的配置生效,推荐用profile拆分配置:
- 将common项目中的
application.properties重命名为application-common.properties - 在member项目的
application.properties中添加:
这样Spring Boot会自动加载依赖Jar中对应的profile配置文件。spring.profiles.include=common
2. Maven打包资源遗漏问题
检查common项目的打包结果,确认application.properties是否被正确打入Jar包:
- 解压common项目生成的Jar包,查看根目录下是否存在该配置文件
- 如果缺失,在common项目的
pom.xml中添加资源打包配置,确保资源文件被正确打包:<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
3. 依赖版本一致性问题
确认member项目依赖的common是最新打包的版本,避免引用的是未包含配置文件的旧Jar包:
- 执行
mvn clean install重新打包common项目 - 刷新member项目的Maven依赖,确保依赖的是最新的common Jar包
备选方案:通过注解指定加载配置
如果不想修改配置文件名,可以在member项目的启动类或配置类上添加@PropertySource注解指定加载依赖中的配置文件:
@SpringBootApplication @PropertySource(value = "classpath:application.properties") public class MemberApplication { public static void main(String[] args) { SpringApplication.run(MemberApplication.class, args); } }
注意:如果member项目自身也有application.properties,会出现配置覆盖的情况,需谨慎使用。
内容的提问来源于stack exchange,提问作者real_rourou
相关产品推荐
相关产品推荐

