持續原創輸出,點擊上方藍字關注我
目錄
前言 Spring Boot 自帶的多環境配置 創建不同環境的配置文件 指定運行的環境
Maven 的多環境配置 創建多環境配置文件 定義激活的變量 pom 文件中定義 profiles 資源過濾 總結
總結
前言
日常開發中至少有三個環境,分別是開發環境(dev
),測試環境(test
),生產環境(prod
)。
不同的環境的各種配置都不相同,比如數據庫,端口,IP
地址等信息。
那麼這麼多環境如何區分,如何打包呢?
本篇文章就來介紹一下Spring Boot
中多環境如何配置,如何打包。
Spring Boot 自帶的多環境配置
Spring Boot 對多環境整合已經有了很好的支持,能夠在打包,運行間自由切換環境。
那麼如何配置呢?下面將會逐步介紹。
創建不同環境的配置文件
既然每個環境的配置都不相同,索性將不同環境的配置放在不同的配置文件中,因此需要創建三個不同的配置文件,分別是application-dev.properties
、application-test.properties
、application-prod.properties
。
「注意」:配置文件的名稱一定要是application-name.properties
或者application-name.yml
格式。這個name
可以自定義,主要用於區分。
此時整個項目中就有四個配置文件,加上
application.properties
。
指定運行的環境
雖然你創建了各個環境的配置文件,但是Spring Boot
仍然不知道你要運行哪個環境,有以下兩種方式指定:
配置文件中指定
在application.properties
或者application.yml
文件中指定,內容如下:
# 指定運行環境爲測試環境
spring.profiles.active=test
以上配置有什麼作用呢?
如果沒有指定運行的環境,Spring Boot
默認會加載application.properties
文件,而這個的文件又告訴Spring Boot
去找test
環境的配置文件。
運行 jar 的時候指定
Spring Boot
內置的環境切換能夠在運行Jar
包的時候指定環境,命令如下:
java -jar xxx.jar --spring.profiles.active=test
以上命令指定了運行的環境是test
,是不是很方便呢?
Maven 的多環境配置
Maven
本身也提供了對多環境的支持,不僅僅支持Spring Boot
項目,只要是基於Maven
的項目都可以配置。
Maven
對於多環境的支持在功能方面更加強大,支持JDK版本
、資源文件
、操作系統
等等因素來選擇環境。
如何配置呢?下面逐一介紹。
創建多環境配置文件
創建不同環境的配置文件,分別是application-dev.properties
、application-test.properties
、application-prod.properties
。
加上默認的配置文件application.properties
同樣是四個配置文件。
定義激活的變量
需要將Maven
激活的環境作用於Spring Boot
,實際還是利用了spring.profiles.active
這個屬性,只是現在這個屬性的取值將是取值於Maven
。配置如下:
[email protected]@
profile.active
實際上就是一個變量,在maven
打包的時候指定的-P test
傳入的就是值。
pom 文件中定義 profiles
需要在maven
的pom.xml
文件中定義不同環境的profile
,如下:
<!--定義三種開發環境-->
<profiles>
<profile>
<!--不同環境的唯一id-->
<id>dev</id>
<activation>
<!--默認激活開發環境-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!--profile.active對應application.yml中的@profile.active@-->
<profile.active>dev</profile.active>
</properties>
</profile>
<!--測試環境-->
<profile>
<id>test</id>
<properties>
<profile.active>test</profile.active>
</properties>
</profile>
<!--生產環境-->
<profile>
<id>prod</id>
<properties>
<profile.active>prod</profile.active>
</properties>
</profile>
</profiles>
標籤<profile.active>
正是對應着配置文件中的@profile.active@
。
<activeByDefault>
標籤指定了默認激活的環境,則是打包的時候不指定-P
選項默認選擇的環境。
以上配置完成後,將會在IDEA的右側Maven
選項卡中出現以下內容:
可以選擇打包的環境,然後點擊package
即可。
或者在項目的根目錄下用命令打包,不過需要使用-P
指定環境,如下:
mvn clean package package -P test
maven
中的profile
的激活條件還可以根據jdk
、操作系統
、文件存在或者缺失
來激活。這些內容都是在<activation>
標籤中配置,如下:
<!--activation用來指定激活方式,可以根據jdk環境,環境變量,文件的存在或缺失-->
<activation>
<!--配置默認激活-->
<activeByDefault>true</activeByDefault>
<!--通過jdk版本-->
<!--當jdk環境版本爲1.8時,此profile被激活-->
<jdk>1.8</jdk>
<!--當jdk環境版本1.8或以上時,此profile被激活-->
<jdk>[1.8,)</jdk>
<!--根據當前操作系統-->
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
</activation>
資源過濾
如果你不配置這一步,將會在任何環境下打包都會帶上全部的配置文件,但是我們可以配置只保留對應環境下的配置文件,這樣安全性更高。
這一步配置很簡單,只需要在pom.xml
文件中指定<resource>
過濾的條件即可,如下:
<build>
<resources>
<!--排除配置文件-->
<resource>
<directory>src/main/resources</directory>
<!--先排除所有的配置文件-->
<excludes>
<!--使用通配符,當然可以定義多個exclude標籤進行排除-->
<exclude>application*.properties</exclude>
</excludes>
</resource>
<!--根據激活條件引入打包所需的配置和文件-->
<resource>
<directory>src/main/resources</directory>
<!--引入所需環境的配置文件-->
<filtering>true</filtering>
<includes>
<include>application.yml</include>
<!--根據maven選擇環境導入配置文件-->
<include>application-${profile.active}.yml</include>
</includes>
</resource>
</resources>
</build>
上述配置主要分爲兩個方面,第一是先排除所有配置文件,第二是根據profile.active
動態的引入配置文件。
總結
至此,Maven
的多環境打包已經配置完成,相對來說挺簡單,既可以在IDEA
中選擇環境打包,也同樣支持命令-P
指定環境打包。
總結
本文介紹了Spring Boot 的兩種打包方式,每種方式有各自的優缺點,你更喜歡哪種呢?
源碼已經上傳,回覆關鍵詞
多環境配置
獲取。