SpringBoot支持多种方式切换环境配置信息,如在配置文件中配置spring.profiles.active: dev,则表明加载application-dev.yml,但这种方式是写死在配置文件中的,一般在发布项目时需在命令行下根据指定环境动态改变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打包的时候执行命令
mvn clean install -Dmaven.test.skip=true -Ptest
总结:参数-Ptest,表明会激活项目下的pom.xml配置的<profiles>标签下id为test的配置信息,其中默认指向dev,因为<activeByDefault>true</activeByDefault>,所以在eclipse、idea开发环境下只要项目是一个maven工程,开发调试时启动项目则spring boot 的配置文件
spring.profiles.active=@profileActive@也能动态识别出默认profile为dev。
至于为啥使用@profileActive@来作为变量的引用,当然这种引用方式也是可以更改的,具体可看如下图片。
自定义资源打包插件,则引用方式就变成#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>