Maven實現多環境配置切換,區分本地、線上環境配置檔案
阿新 • • 發佈:2021-01-27
技術標籤:kubernetesjenkinsmavenintellij ideajava
文章目錄
參考文章:Maven實現多環境配置切換
1. 問題描述
開發環境、測試環境、生產環境--------我們的軟體在不同的環境中,系統引數和配置可能會不一樣,比如資料來源配置、日誌檔案配置、以及一些軟體執行過程中的基本配置,那每次我們將軟體部署到不同的環境時,都需要修改相應的配置檔案?Maven提供了一種方便的解決這種問題的方案,就是profile功能。
2. 定義多環境配置檔案
- 在src/main/resources下新建配置檔案(yml/yaml),如下表所示:
profile | 檔名 | 配置檔案內容 |
---|---|---|
全域性 | application.yaml | 專案統一配置 |
test | application-test.yaml | 本地測試環境 |
dev | application-dev.yaml | 線上開發環境 |
prod | application-prod.yaml | 生產環境 |
-
完成後的目錄結構圖:
3. 修改Maven pom配置
3.1 新增profiles配置
- 每一個profile子節點代表一個環境,id代表maven部署打包時指定的環境引數
- activeByDefault節點指定當前環境是否是預設環境
- 核心是在編譯過程中,讀取不同的配置檔案**${profileActive}**,然後再由spring去讀取引數配置
<!--profiles配置-->
<profiles>
<!--開發環境 -->
<profile>
<id>dev</id>
<properties>
<profileActive>dev</profileActive>
</properties>
<activation >
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--本地環境 -->
<profile>
<id>test</id>
<properties>
<profileActive>test</profileActive>
</properties>
</profile>
</profiles>
3.2 新增build配置
- application-${profileActive}.yaml 指定當前環境的配置檔案,位於src/main/resources目錄下
- 若存在多個配置檔案,需一一新增上。
<build>
<!--Resource檔案編譯配置-->
<resources>
<resource>
<directory>src/main/resources</directory>
<!--設定資源排除-->
<excludes>
<exclude>application*.yaml</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>application-${profileActive}.yaml</include>
<include>application.yaml</include>
<!--附上resources目錄下的其它配置-->
<include>logback.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<!--預設maven編譯配置-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3.3 定義執行引數
- 在全域性配置檔案application.yaml中定義配置檔案變數(來源於profile裡的標籤),如圖所示:
4. 指定執行環境
4.1 本地執行
-
本地測試時,在Maven檢視選擇當前的profile:
4.2 雲端編譯
-
釋出到雲端開發環境時,使用以下命令打包(結尾加上 -P dev),會自動將@[email protected]替換為dev:
mvn clean package -DskipTests=true -U -P dev
注:採用Jenkins部署時,若存在多種環境,可採用【引數化構建/選項引數】進行自動化地配置。