1. 程式人生 > 其它 >Maven實現多環境配置切換,區分本地、線上環境配置檔案

Maven實現多環境配置切換,區分本地、線上環境配置檔案

技術標籤:kubernetesjenkinsmavenintellij ideajava

文章目錄

參考文章:Maven實現多環境配置切換

1. 問題描述

   開發環境、測試環境、生產環境--------我們的軟體在不同的環境中,系統引數和配置可能會不一樣,比如資料來源配置、日誌檔案配置、以及一些軟體執行過程中的基本配置,那每次我們將軟體部署到不同的環境時,都需要修改相應的配置檔案?Maven提供了一種方便的解決這種問題的方案,就是profile功能。

2. 定義多環境配置檔案

  • 在src/main/resources下新建配置檔案(yml/yaml),如下表所示:
profile檔名配置檔案內容
全域性application.yaml專案統一配置
testapplication-test.yaml本地測試環境
devapplication-dev.yaml線上開發環境
prodapplication-prod.yaml生產環境
  • 完成後的目錄結構圖:

    image-20210125153321772

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裡的標籤),如圖所示:

image-20210125164142846

4. 指定執行環境

4.1 本地執行

  • 本地測試時,在Maven檢視選擇當前的profile:

    image-20210125154426960

4.2 雲端編譯

  • 釋出到雲端開發環境時,使用以下命令打包(結尾加上 -P dev),會自動將@[email protected]替換為dev:

    mvn clean package -DskipTests=true -U -P dev
    

注:採用Jenkins部署時,若存在多種環境,可採用【引數化構建/選項引數】進行自動化地配置。