1、背景
開發過程中,我們的軟件會有不同的環境、如開發環境、預覽環境、生產環境等,不同的環境,使用的配置文件往往是不同的。如數據源的配置、log的配置、其他一些基礎配置。
在發布環境時,每次對配置文件改來改去的,很麻煩,而且極易出錯。
Maven提供了一種解決這類問題的方案,那就是profile。
2、Profile
Profile可以讓我們定義一系列配置信息,然后指定激活條件,來激活指定的配置信息。這樣,我們可以定義多個profile,每個profile定義不同的激活條件和配置信息。
這樣我們就可以不同的環境使用不同的激活條件了。
profile定義的位置
(1) 針對於特定項目的profile配置我們可以定義在該項目的pom.xml中。(下面舉例是這種方式)
(2) 針對於特定用戶的profile配置,我們可以在用戶的settings.xml文件中定義profile。該文件在用戶家目錄下的“.m2”目錄下。
(3) 全局的profile配置。全局的profile是定義在Maven安裝目錄下的“conf/settings.xml”文件中的。
3、配置profile
定義如下profile配置文件
<profiles>
<profile>
<!--開發環境-->
<id>develop</id>
<properties>
<profiles.active>develop</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!--預覽環境-->
<id>preview</id>
<properties>
<profiles.active>preview</profiles.active>
</properties>
</profile>
<profile>
<!--生產環境-->
<id>release</id>
<properties>
<profiles.active>release</profiles.active>
</properties>
</profile>
</profiles>
上面定義了,三個環境,分別為開發環境、預覽環境和生產環境。其中develop為默認激活的(<activeByDefault>true</activeByDefault>),不指定profile的場合,默認使用開發環境。也可以在執行maven package時指定profile選擇選擇哪個環境。
4、配置文件

從上圖可以看到,配置文件的名稱為application.properties,分別位於不同的文件夾下。現在我們想要做的是不同的環境使用不同目錄下的配置文件。
5、配置maven資源插件
<build>
<finalName>config</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>config/</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources/config/${profiles.active}</directory>
<targetPath>.</targetPath>
</resource>
</resources>
</build>
6、激活profile
1)默認的激活
上面的profile配置中設置的默認的激活環境。如下面所示
<activeByDefault>true</activeByDefault>
2)使用-P參數顯示激活一個profile
當我們在進行Maven操作時就可以使用-P參數顯示的指定當前激活的是哪一個profile了。比如我們需要在對項目進行打包的時候使用id為dev的profile,我們就可以這樣做:
mvn package –P develop
