maven profile動態選擇配置文件


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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM