分兩個場景進行闡述:
一、單工程
通常分爲開發環境(dev)和生產環境(prod)。讓我們開始吧!
1、在src/main/resources/下面創建兩個文件application-dev.yml,application-prod.yml。兩個文件裏面分別寫開發和生產環境的配置參數,如:
2、所有程序需要的配置參數已經寫到配置文件裏面了,那麼原來的application.yml就不能再寫這些配置參數了。它的作用是要指定編譯打包時讀取哪個配置文件,因此只要寫入:
表示讀取application-dev.yml。如果把dev改成prod則表示讀取application-prod.yml。這樣就實現了不同環境的打包方案。
二、多個子工程時如何實現
1、在子工程的application.yml裏面配置個性化的部分,如:
公共部分如mysql數據庫參數配置項放到公共的配置文件application-common.yml文件裏面。編譯打包時爲了加載它,就要在application.yml裏面加上一句:spring.profiles.include=common,(yml的寫法請自行轉換)。
2、再來看application-common.yml怎麼個寫法,通常可以把mysql配置參數、redis配置參數、oss、sms等共同需要的配置寫在裏面。然而我們同樣需要分開發、測試、生產等多個環境,不同環境配置參數取值是不同的,所以這裏只寫入一句:spring.profiles.active=@environment@,(yml的寫法請自行轉換),這裏的environment是變量,它會被dev、test、prod替換,怎麼替換後面再說。
3、再創建不同環境對應的配置文件:application-dev.yml、application-test.yml、application-prod.yml。common文件裏面的environment變量值會決定加載那個文件。
4、像mysql,redis等公共配置參數可以寫到application-common.yml文件裏面,參數值用變量,如下:
加載時從dev或者test或者prod的yml文件讀取,如dev的yml內容:
5、至此就可以通過maven命令來給不同環境編譯打包了。爲了更方便,要把不同環境的打包命令寫到腳本里面,如下:
腳本內容參考如下:
可以看到-Pprod就是environment的值。