maven中profile動態(tài)打包不同環(huán)境配置文件的實(shí)現(xiàn)
maven中的profile可以在打包時動態(tài)選擇不同的配置文件進(jìn)行打入,在項(xiàng)目具有開發(fā)、測試、生產(chǎn)環(huán)境時可以更方便優(yōu)雅的進(jìn)行不同環(huán)境的打包運(yùn)行
示例圖:

1-配置profile
第一步需要為每個環(huán)境配置一個profile標(biāo)簽,在pom文件中進(jìn)行配置。我這里只演示dev和test的環(huán)境配置
<profiles>
<profile>
<id>dev</id> <!--給每個環(huán)境一個唯一的id-->
<properties><!--在這個標(biāo)簽中配置你的自定義變量,下面的env就是我自己定義的-->
<env>dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault><!--默認(rèn)激活的環(huán)境-->
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
</profiles>
這里需要說明的是自定義的變量,這個變量可以在pom文件中的其他地方以${標(biāo)簽名}的形式進(jìn)行引用,同時也可以在springboot的配置文件中進(jìn)行引用,在springboot的配置文件中進(jìn)行引用時,使用@標(biāo)簽名@進(jìn)行引用
2-配置需要進(jìn)行打包的文件
當(dāng)我們配置好環(huán)境之后,需要在pom里新建resources標(biāo)簽進(jìn)行根據(jù)指定環(huán)境打包指定配置文件的處理
<resources>
<resource>
<directory>src/main/resources</directory><!--指定資源文件夾-->
<includes>
<include>**/*.properties</include><!--將該資源文件夾下的properties文件全部打包-->
</includes>
<excludes>
<exclude>**/payConfig/**</exclude><!--這里排除payConfig文件夾,也就是說該文件夾中的文件不會被打包,因?yàn)檫@個文件夾下的配置文件需要動態(tài)處理-->
</excludes>
<filtering>false</filtering><!--這些資源文件將保持原樣,不會進(jìn)行任何替換或修改操作-->
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>application-${env}.yml</include><!--這里使用占位符進(jìn)行動態(tài)引用以確定具體的打包文件-->
<include>application.yml</include><!--主配置文件必須打包-->
</includes>
<filtering>true</filtering><!--開啟過濾,在打包時application.yml中配置的@env@將被確定到底是什么變量-->
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>config/payConfig/aliPay/${env}/*.properties</include>
<include>config/payConfig/wxPay/${env}/*.properties</include>
</includes>
<filtering>false</filtering><!--這里不需要設(shè)置過濾,上面的${env}是pom內(nèi)部變量的使用,設(shè)置過濾是為了替換文件內(nèi)的引用變量-->
</resource>
</resources>
提示1:filtering標(biāo)簽用于指定是否對資源文件進(jìn)行過濾處理。
當(dāng)一個資源文件需要在構(gòu)建期間進(jìn)行替換或修改時,可以使用過濾機(jī)制。例如,將屬性值注入到配置文件中,或根據(jù)環(huán)境對資源文件進(jìn)行不同的配置。
提示2:** 表示多級目錄匹配。* 表示一級目錄匹配。
3-配置SpringBoot配置文件

可以看到配置文件中使用了@env@占位符進(jìn)行配置,也就是說,我們只有在使用maven進(jìn)行編譯的時候才確定到底是什么值,由于在第二步中已經(jīng)在pom中開啟了過濾,所以在打包時占位符將被替換
4-編譯測試
我不使用默認(rèn)的dev環(huán)境,手動選擇test進(jìn)行編譯


下面是編譯后的文件結(jié)構(gòu)

可以看到成功將test環(huán)境的文件進(jìn)行編譯,其他不包含,并且application.yml中的值也被替換

同時也可以使用mvn clean package -P[dev|test|pro]指定環(huán)境進(jìn)行命令行形式打包
TIPS:
- -P代表(Profiles配置文件) 在<profiles>指定的<id>中,可以通過-P進(jìn)行傳遞或者賦值。 打包時執(zhí)行mvn clean package -P prod將觸發(fā)prod環(huán)境的profile配置 打包時執(zhí)行mvn clean package -P test將觸發(fā)test環(huán)境的profile配置
- -D代表(Properties屬性)-D屬性名=屬性值 如果pom文件中已經(jīng)通過properties標(biāo)簽指定了值的話,使用命令將替換pom中的值。如果沒有的話,它將被設(shè)置
大功告成
到此這篇關(guān)于maven中profile動態(tài)打包不同環(huán)境配置文件的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)maven profile動態(tài)打包不同環(huán)境配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring cloud Gateway簡介及相關(guān)配置方法
這篇文章主要介紹了Spring cloud Gateway簡介及相關(guān)配置方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04
SpringMVC JSON數(shù)據(jù)交互實(shí)現(xiàn)過程解析
這篇文章主要介紹了SpringMVC JSON數(shù)據(jù)交互實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10
Java 獲取當(dāng)前時間及實(shí)現(xiàn)時間倒計(jì)時功能【推薦】
這篇文章主要介紹了Java 獲取當(dāng)前時間及實(shí)現(xiàn)時間倒計(jì)時功能 ,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05
深入理解Java8新特性之Stream API的終止操作步驟
Stream是Java8的一大亮點(diǎn),是對容器對象功能的增強(qiáng),它專注于對容器對象進(jìn)行各種非常便利、高效的 聚合操作(aggregate operation)或者大批量數(shù)據(jù)操作。Stream API借助于同樣新出現(xiàn)的Lambda表達(dá)式,極大的提高編程效率和程序可讀性,感興趣的朋友快來看看吧2021-11-11
java中hasNextInt判斷后無限循環(huán)輸出else項(xiàng)的解決方法
這篇文章主要介紹了java中hasNextInt判斷后無限循環(huán)輸出else項(xiàng)的解決方法的相關(guān)資料,需要的朋友可以參考下2016-10-10
Java實(shí)現(xiàn)求解一元n次多項(xiàng)式的方法示例
這篇文章主要介紹了Java實(shí)現(xiàn)求解一元n次多項(xiàng)式的方法,涉及java高斯消元法處理矩陣運(yùn)算解多項(xiàng)式的相關(guān)操作技巧,需要的朋友可以參考下2018-01-01

