升级spring-boot-starter-parent后无法读取maven profile的spring.profiles.active属性
Spring Boot 2.5.5版本Profile占位符不替换解决方案
核心原因
该问题由两处配置错误+Spring Boot版本升级后的资源过滤规则调整共同导致:
- 配置属性名拼写不匹配
- 2.4+版本默认资源过滤规则变更,未显式开启占位符替换
具体解决步骤
- 修正application.properties配置
当前配置存在两处拼写错误:
- Spring Boot激活profile的官方配置key为
spring.profiles.active(复数profiles),现有配置少了后缀s - pom中定义的属性名为
spring.profiles.active,占位符中的属性名和pom定义不一致
修正后的配置如下:
spring.profiles.active=@spring.profiles.active@
- 显式开启Maven资源过滤
在pom.xml的<build>节点下添加如下资源配置,开启占位符替换功能:
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <!-- 原有其他build配置保持不变 --> </build>
如果pom中已经配置了resources节点,仅需给对应resources配置项添加<filtering>true</filtering>即可。
3. 验证生效
重新执行Maven编译/打包命令,重启项目即可看到正确的profile激活信息。
可选检查项
如果完成以上配置后仍未生效,检查pom中是否存在自定义Maven资源分隔符的配置,确保分隔符为@即可,spring-boot-starter-parent默认已内置该配置,无自定义需求无需额外修改。
内容的提问来源于stack exchange,提问作者Pasha Xa
相关产品推荐
相关产品推荐

