Springboot使用Maven Profile和Spring Profile進行多環境配置

 

目的

在實際的項目上,一般會分三種環境dev、test、prod來方便我們的開發和部署,要求我們在開發的時候可以方便地進行環境的切換,又要滿足在發佈版本的時候可以儘可能減少測試人員的配置。

Spring Profile

多環境

爲了實現多環境配置,我們可以在本地開發的時候在Resource文件夾下新建不同環境的配置文件,如下圖所示:

 

這時候我們只需要在主配置文件application.yml文件使用spring.profiles.active = dev/test/prod來進行不同環境的切換

 

spring:
  profiles:
    active: dev #加載dev配置文件

經過上述步驟,我們即可在本地開發時根據不同的環境進行測試。

主配置文件與不同環境的配置文件

Spring Profile有一個特性即可以在application.yml配置通用的內容,在application-dev.yml文件中配置不同文件的差異化配置,這樣可以精簡我們的配置文件。配置如下:

 

# 主配置文件主要用來存放公共設置,不受環境配置影響
server:
  port: 8082 # 指定端口號
  context-path: /server # 指定訪問資源的根路徑
spring:
  profiles:
    active: dev 

dev配置文件

 

# 主要用來存放不同環境差異化配置,包括ftp地址、數據庫連接等
spring:
  datasource:
    username: xxx
    password: xxx
    url: xxx
    driver-class-name: oracle.jdbc.driver.OracleDriver

上述解決方案雖然可以解決我們的環境問題,但是不夠優雅,還有一些值得優化的地方,比如打包出的配置文件有四個、每次需要手動修改主配置文件的環境信息等。


IDEA上運行的時候配置

idea上運行的時候,下圖中的active profiles填寫選擇生效的配置文件,例如prod。

Spring 中爲我們提供了 Profile 這個功能。我們只需要在啓動的時候添加一個虛擬機參數,激活自己環境所要用的 Profile 就可以了。操作起來很簡單,只需要爲不同的環境編寫專門的配置文件,如:application-dev.ymlapplication-prod.yml, 啓動項目時只需要增加一個命令參數 --spring.profiles.active=環境配置 即可,啓動命令如下:

java -jar hello-spring-cloud-alibaba-nacos-provider-1.0.0-SNAPSHOT.jar --spring.profiles.active=prod

 

Maven Profile

Profile配置

Maven 也提供了 Profile 支持,它允許我們在 pom.xml 中定義多個 Profile ,每個 profile 可以指定自己的一些配置、依賴、觸發條件等。例如:

 

按照上述的配置,我們配置了dev/test/prod三種配置並默認選擇dev環境。

資源過濾

在進行打包的時候,我們並不需要把dev或者test等配置文件打包進行,具體什麼需要過濾,什麼需要保留,按需配置。

 

IDEA上運行的時候配置

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章