
產生問題的背景
由于在項目開發的時候,我們一般都是使用的本地庫,數據庫連接寫的是本地的,如果我們將項目打成war的時候,里面的配置連接寫的是我們本地的,當我們直接把war拷貝到服務器上面進行部署的時候,是不可能直接用的,這時候可能會有兩種方法,一、在打包的時候修改數據庫連接,這樣我們就可以直接把war放到服務器上面,二是把壓縮包拷貝到服務器上面,再修改,這樣會給每次進行升級系統帶來麻煩,這同樣就需要一個工具幫我們去解決這些問題了,實現正式和測試環境的切換
引入Maven的profile
首先介紹下profile:
profile就是幫助我們定義一些配置,這些配置都是一套一套的,在特定的情況下動態被激活使用,也可以提供默認的屬性去激活默認的一套profile,
這里主要是通過profiles創建兩套profile和利用filters,resources實現配置文件的覆蓋,實現環境的切換,具體步驟如下
具體實現步驟
一、首先看下默認的數據庫配置文件,配置文件在resources的根目錄下面

二、接著我們復制出兩套配置文件出來



三、配置好數據庫配置文件,我們需要在pom文件中建立對應的兩套profile配置,

其中的env標簽,是一個環境變量,我們后面會要用到,他有一個默認值是在這里面配置的,默認是dev

配置好上面的兩個profile之后,會在idea面板中看到

四、配置好定義文件之后,我們需要使用filters和resources來實現配置件變量的覆蓋
? ? Ⅰ.首先定義filters來配置使用哪個文件中的變量去替換現有的配置文件中的占位符

這里面的env就是配置的環境變量,這個值隨著我們打包是勾選dev還是product動態改變的,例如和勾選dev.則用jdbc-dev里面的值去替換數據庫配置文件中的占位符,例如 jdbc-dev.properties中有一個? username=lezai,則會將當前項目資源中的文件中帶有${USERNAME}占位符直接使用jdbc-properties中的值替換掉
Ⅱ.替換制定資源的文件中的占位符,使用到resources。直接看配置

配置講解:
①使用resources的includes 將打包是需要的配置文件打包進來,因為我們這里需要進行占位符替換,所以我只導入xml文件,然后將filtering設置為true,意思使用上面定義占位符過濾替換,使其生效,
②使用resources的excludes將第一步驟中排除的非xml文件導進來,但是此時不開啟filtering為true,也就是需要對這些文件的占位符進行替換
五、只需要這幾步就可以在部署系統時進行不同環境的切換,使用方法是打包時勾選不同的profile?

六、配置就這幾步,很輕松的事件了環境的切換,特別注意的是最后一步,首先將需要進行占位符替換的使用includes包進來,并且開始filtering,最后再使用excludes將除了上面的文件包進來,filtering不開啟
感謝大家能看到這里,文中講的不正確的地方,歡迎在下方留言,我會及時修正。
歡迎大家關注我的公眾號,會不定時更新技術干貨。
