我使用过三种方式进行多环境控制
一、通过maven打包进行控制
pom配置
<!-- 环境配置 -->
<profiles>
<profile>
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<!-- 打包配置 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>**/*.*</include>
</includes>
</resource>
<resource>
<directory>${project.basedir}/src/main/resources/${profiles.active}</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
resource下配置文件
resource|
dev|
application.yml
test|
application.yml
maven打包命令:
mvn clean package -Ptest -U
target中resource下配置文件
resource|
dev|
application.yml
test|
application.yml
application.yml -- 将指定环境下的配置文件copy到resource目录下,mvn clean package -Ptest是将test文件下的application.yml copy到resource下的。
java -jar xxx.jar(扫描resource下的application.yml)
二、使用spring参数spring.profiles.active控制
resource下配置文件
resource|
application-dev.yml
application-test.yml
java -jar xxx.jar --spring.profiles.active=test(寻找resource下application-test.yml)
三、使用spring参数spring.config.location控制()
resource下可有配置文件,也可无配置文件
java -jar xxx.jar --spring.config.location=/opt/config/application.yml(指定配置文件,寻找/opt/config/application.yml作为配置文件)
java -jar xxx.jar --spring.config.location=classpath:/,/opt/config/application.yml(spring.config.location=classpath:/,/opt/config/application.yml,配置文件互补)
补充:
spring.config.additional-location指定配置文件夹路径
java -jar xxx.jar --spring.config.additional-location=/opt/config/(指定配置文件夹,扫描/opt/config/下的文件作为配置文件)