SpringBoot支持多種方式切換環(huán)境配置信息,如在配置文件中配置spring.profiles.active: dev,則表明加載application-dev.yml,但這種方式是寫死在配置文件中的,一般在發(fā)布項目時需在命令行下根據(jù)指定環(huán)境動態(tài)改變spring.profiles.active的值,針對這種方式如我們使用的是MAVEN打包工具,可通過如下方式來改變。
1、更改application.xml
由spring.profiles.active=dev更改為spring.profiles.active=@profileActive@
2、更改pom.xml
<profile>
<id>dev</id>
<properties>
<profileActive>dev</profileActive>
<maven.test.skip>true</maven.test.skip>
<scope.jar>compile</scope.jar>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<profileActive>test</profileActive>
<maven.test.skip>true</maven.test.skip>
<scope.jar>provided</scope.jar>
</properties>
</profile>
<profile>
<id>demo</id>
<properties>
<profileActive>demo</profileActive>
<maven.test.skip>true</maven.test.skip>
<scope.jar>provided</scope.jar>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<profileActive>pro</profileActive>
<maven.test.skip>true</maven.test.skip>
<scope.jar>provided</scope.jar>
</properties>
</profile>
3、在maven打包的時候執(zhí)行命令
mvn clean install -Dmaven.test.skip=true -Ptest
總結:參數(shù)-Ptest,表明會激活項目下的pom.xml配置的<profiles>標簽下id為test的配置信息,其中默認指向dev,因為<activeByDefault>true</activeByDefault>,所以在eclipse、idea開發(fā)環(huán)境下只要項目是一個maven工程,開發(fā)調試時啟動項目則spring boot 的配置文件
spring.profiles.active=@profileActive@也能動態(tài)識別出默認profile為dev。
至于為啥使用@profileActive@來作為變量的引用,當然這種引用方式也是可以更改的,具體可看如下圖片。

image.png
自定義資源打包插件,則引用方式就變成#profileActive#:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<encoding>UTF-8</encoding>
<delimiters>
<delimiter>#</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>