天天看點

一次打包,多個環境運作(開發、測試、生産等)

以前常用的,使用maven插件根據不同環境(開發、測試、線上)打不同的包,友善吧? 也還可以,但是打各個環境的包配置檔案不一樣(maven打包是指定了編譯配置檔案,未指定不會打包進來),有時候包會出現混淆,影響使用;最近使用了jar啟動指令指定profiles檔案,個人感覺更加合理一些,不使用maven插件打包,就打一個包,在不同的環境下,配置不同的啟動參數就可以了,啟動指令隻需配置一次,一個包,就能用到不同的環境,開發、測試、線上環境都可以用,簡單介紹下。

簡單來說就是使用jar啟動指令的時候,指定不同的profiles,來達到一次打包,多個環境共用的目的。

(1)application.yml是預設加載使用的配置檔案,裡面的配置項會預設加載;

(2)通過建立多個yml,application-dev.yml,application-uat.yml,application-prod.yml,在application.yml中或java啟動的時候配置,可以激活具體自定義yml;

例如:

項目會加載application.yml和application-dev.yml中的配置項;

springboot2.4(2020-11-12釋出)後版本,配置有點不一樣了,更改為:

(3)字尾名字要保持一緻,否則會報找不到具體配置項目(不會報找不到yml);

(4)假如application.yml配置項與自定義yml(application-dev.yml等)一樣,以自定義yml配置項為準;

(1)application.yml配置

(2)application-dev.yml配置

(3)application-prod.yml配置

(1)當active:dev

一次打包,多個環境運作(開發、測試、生産等)

由展示可以看出:展示了application.yml和application-dev.yml配置項内容;

(2)active:prod的時候:

一次打包,多個環境運作(開發、測試、生産等)

由展示可以看出:展示了application.yml和application-prod.yml配置項内容;

簡單總結:

(1)當時active選擇為:dev的時候,會加載application.yml和application-dev.yml兩個配置類;

(2)當時active選擇為:prod的時候,會加載application.yml和application-dev.yml兩個配置類;

利用這個特性,實作編譯打包一次,多個環境運作的目的;

其實是利用java的jar包設定啟動參數的來實作的,dev伺服器環境運作指令:

其中-Dspring.profiles.active=dev,作用就是與配置檔案配置active一樣,并且啟動指令中設定參數,級别高于配置檔案中,目前正在使用的:配置檔案中預設為dev,然後打包,根據不同伺服器環境配置不同的啟動參數,例如目前uat環境為:

prod環境為:

重點說明:

(1)這個方式不同于以前maven打包的環境,以前通過maven插件打包部落格介紹過,是在編譯打包的時候就指定了打包的yml,指定dev環境的時候,application-uat.yml和application-prod.yml壓根就不會編譯和打包,這樣各個伺服器的啟動指令也一樣;但是也導緻各個環境的包不一樣,有時候會攪渾,甚至打包的時候切換也容易出問題;

(2)目前的通過啟動指令執行配置檔案的方式,啟動指令在伺服器上更新記錄一次就好了,然後打包的時候,就可以實作多個環境(開發、uat、線上)同一個jar包,不容易混淆,個人認為更加合理一些;

更多資訊請關注公衆号:「軟體老王」,關注不迷路,軟體老王和他的IT朋友們,分享一些他們的技術見解和生活故事。

更多資訊請關注公衆号:「軟體老王」,關注不迷路,IT技術與相關幹貨分享,回複關鍵字擷取對應幹貨,本文版權歸作者軟體老王所有,轉載需注明作者、超連結,否則保留追究法律責任的權利。

一次打包,多個環境運作(開發、測試、生産等)

繼續閱讀