springboot maven项目不自动替换profile占位符

spring-boot maven项目不自动替换profile占位符


  1. 场景: application*.yml 文件不配置可正常替换profile占位符,增加bootstarp.yml且在bootstrap.yml 中配置spring.profiles.active后,编译后的bootstrap.yml占位符不自动替换, 还是 @xxx@

  1. 原因: 项目继承自 spring-boot-starter-parent, pom默认配置了resource及占位符替换, 只配置了application*.yml
<!--  spring-boot-starter-parent中的默认配置 -->
      <resource>
        <filtering>true</filtering>
        <directory>${basedir}/src/main/resources</directory>
        <includes>
          <include>**/application*.yml</include>
          <include>**/application*.yaml</include>
          <include>**/application*.properties</include>
        </includes>
      </resource>

如果要适用bootstrap.yml,在需要pom中添加

<!-- 模块pom中添加 -->
	<resource>
	     <filtering>true</filtering>
	     <directory>${basedir}/src/main/resources</directory>
	     <includes>
	         <include>**/application*.yml</include>
	         <include>**/bootstrap*.yml</include>
	     </includes>
	 </resource>
	 <resource>
	     <directory>${basedir}/src/main/resources</directory>
	     <excludes>
	         <exclude>**/application*.yml</exclude>
	         <exclude>**/bootstrap*.yml</exclude>
	     </excludes>
	 </resource>

注: spring-boot-starter-parent定义了占位符为 @, 普通 ${xxx}打包时不会替换,只替换 @xxx@

<resource.delimiter>@</resource.delimiter>
经验分享 程序员 微信小程序 职场和发展