Maven profile環境切換

介紹

profile可以配置一系列信息,使用mvn clean compile -Pxx激活特定的profile和其下配置信息,示例:

    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
        </profile>
        <profile>
            <id>prd</id>
            <properties>
                <env>prd</env>
            </properties>
        </profile>
    </profiles>

build中使用resources配置指定編譯資源文件路徑

  • resources 項目資源文件
  • testResources 測試資源文件
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>src/main/test/resources</directory>
            </testResource>
        </testResources>
    </build>

場景

項目發佈時,本地環境、測試環境和線上環境通常使用的配置都不同,因此可以使用profile實現不同環境配置切換

第一種方式,使用resource配置實現,首先目錄結構如下:

src
|___main
    |___config
        |___dev
            |___conf.properties
            |___jdbc.properties
        |___prd
            |___conf.properties
            |___jdbc.properties
        |___test
            |___conf.properties
            |___jdbc.properties
    |___resources
        |___spring-dao.xml
        |___spring-service.xml
        |___spring-web.xml

maven配置如下:

<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>src/main/config/${dev}</directory>
            </resource>
        </resources>
    </build>

    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
        </profile>
        <profile>
            <id>prd</id>
            <properties>
                <env>prd</env>
            </properties>
        </profile>
    </profiles>

第二種方式,使用filter替換資源Key,目錄如下:

src
|___main
    |___config
        |___dev
            |___filter.properties
        |___prd
            |___filter.properties
        |___test
            |___filter.properties
    |___resources
        |___spring-dao.xml
        |___spring-service.xml
        |___spring-web.xml
        |___conf.properties
        |___jdbc.properties

maven配置如下:

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

    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
        </profile>
        <profile>
            <id>prd</id>
            <properties>
                <env>prd</env>
            </properties>
        </profile>
    </profiles>

會使用src/main/config/${env}/filter.properties文件中的key=value的value替換src/main/resources目錄下,${key}引用的地方

除了使用filter指定文件的方式,也可以在profile中配置

<profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
                <jdbc.url>jdbc:mysql://localhost:3306/dbName?useUnicode=true&amp;useSSL=true</jdbc.url>
            </properties>
        </profile>
        <profile>
            <id>prd</id>
            <properties>
                <env>prd</env>
            </properties>
        </profile>
    </profiles>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章