Maven profile動態加載屬性配置文件

背景

針對於開發項目中,軟件會面臨着不同的運行環境,比如測試環境,生產環境,開發環境.每個環境下對應的配置數據源,日誌配置,資源配置等可能也不一樣,需要自行修改屬性配置文檔,這樣做會很大程度上浪費人的精力,然而maven提供了profile功能就能很好的解決.

Profile簡述

profile可以讓我們定義一系列的配置信息,然後指定其激活條件。這樣我們就可以定義多個profile,然後每個profile對應不同的激活條件和配置信息,從而達到不同環境使用不同配置信息的效果。

  1. 對於某個具體的項目來說,如果想使用profile功能,直接在pom文件裏配置即可(具體可參照下面).
  2. 如果是針對於某個特定的用戶或者配置全局的,這就需要修改maven安裝目錄下的settings.xml文件.

配置動態打包

1.先上一下配置文檔的目錄結構

這裏寫圖片描述
dev.properties裏面的具體內容(截取了一部分,其他環境的類似):
這裏寫圖片描述
config.properies內容:
這裏寫圖片描述

2.profile的配置方式

<profiles>
    <profile>
        <!-- 本地開發環境 -->
        <id>dev</id>
        <properties>
            <profiles.active>dev</profiles.active>
        </properties>
        <activation>
            <!-- 設置默認激活這個配置 -->
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <!-- 發佈環境 -->
        <id>release</id>
        <properties>
            <profiles.active>release</profiles.active>
        </properties>
    </profile>
    <profile>
        <!-- 測試環境 -->
        <id>beta</id>
        <properties>
            <profiles.active>beta</profiles.active>
        </properties>
    </profile>
</profiles> 

3.配置屬性文件位置

在build標籤下面:

<filters>
    <filter>src/main/resources/profiles/${env}.properties</filter>
</filters>
<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
   </resource>
</resources>

正如前面圖上所示,開發環境,測試環境,生產環境下的屬性配置文檔都放在了src/main/resources/profiles目錄下,文件命名規則爲*.properties.
調用過程:

  1. 如上通過profiles標籤選中你要使用的環境
  2. 通過package命令將環境變量注入到config.properties中
  3. 項目會自動加載config.properties文件

4.激活profile

1.上面的代碼中有默認的配置方式:

<activation>
    <!-- 設置默認激活這個配置 -->
    <activeByDefault>true</activeByDefault>
</activation>

2.使用-P參數顯示激活一個profile

  當我們在進行Maven操作時就可以使用-P參數顯示的指定當前激活的是哪一個profile了。比如我們需要在對項目進行打包的時候使用id爲dev的profile,我們就可以這樣做:

mvn package –Pdev

  這裏假設dev是在settings.xml中使用dev標記的處於激活狀態的profile,那麼當我們使用“-P !profile”的時候就表示在當前操作中該profile將不處於激活狀態。
PS:最後要說明的是,在屬性配置文檔中不要使用不合要求的其他字符,會導致特殊字符後面所有的變量都無法注入到屬性文檔中.

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