開發的流程是本地>測試>預發布>正式,所以不同的環境,肯定是不同的配置文件,所以我們需要針對不同的環境做不同的配置切換.
下面我們來說說 springboot 是怎么來切換的:
1、package 方式使用 war,應用部署到 tomcat
先來看一下文件結構,

可以看到,這里我們有 3 個 properties 的配置文件,還有 1 個 application.yml文件,這個文件里有一個參數 spring.profiles.active 的選項,這個用來激活不同環境的配置.
然后重點是看下面 pom.xml 的配置,如下:
<profiles>
<profile>
<id>dev</id>
<properties>
<profileActive>dev</profileActive>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<profileActive>test</profileActive>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
<profile>
<id>pro</id>
<properties>
<profileActive>pro</profileActive>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>application.yml</exclude>
<exclude>application.properties</exclude>
<exclude>application-dev.properties</exclude>
<exclude>application-test.properties</exclude>
<exclude>application-pro.properties</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>application-${profileActive}.properties</include>
<include>application.yml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<delimiters>@</delimiters>
<encoding>utf-8</encoding>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
</plugins>
然后當你在構建項目的時候可以這樣來寫命令 mvn clean package -Dmaven.test.skip=true -P dev/test/pro(根據不同的環境來切換不同的變量值)
2、package 方式是 jar,服務器上使用 java -jar 命令來啟動
pom.xml 里的 profiles 配置可以完全刪除,還有 build 里這段配置也可以刪除.
然后在項目啟動的時候通過指定spring.profiles.active 參數來激活配置
nohup java -jar *.jar -dprocesName=templateDecoration --spring.profiles.active=test > /xxx/xxx/xxx.log &
