背景
針對於開發項目中,軟件會面臨着不同的運行環境,比如測試環境,生產環境,開發環境.每個環境下對應的配置數據源,日誌配置,資源配置等可能也不一樣,需要自行修改屬性配置文檔,這樣做會很大程度上浪費人的精力,然而maven提供了profile功能就能很好的解決.
Profile簡述
profile可以讓我們定義一系列的配置信息,然後指定其激活條件。這樣我們就可以定義多個profile,然後每個profile對應不同的激活條件和配置信息,從而達到不同環境使用不同配置信息的效果。
- 對於某個具體的項目來說,如果想使用profile功能,直接在pom文件裏配置即可(具體可參照下面).
- 如果是針對於某個特定的用戶或者配置全局的,這就需要修改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.
調用過程:
- 如上通過profiles標籤選中你要使用的環境
- 通過package命令將環境變量注入到config.properties中
- 項目會自動加載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:最後要說明的是,在屬性配置文檔中不要使用不合要求的其他字符,會導致特殊字符後面所有的變量都無法注入到屬性文檔中.