Maven爲不一樣環境配置打包

在開發過程當中常常要遇到爲不一樣的環境打包,這裏面最主要的問題在於,不一樣環境的配置是不同的,若是爲不一樣環境打包每次都手工修改配置,那不但工做量大,並且很容易出錯。若是用ant的話,用變量加上replace等命令很容易實現不一樣環境不一樣配置打包。java

在maven中能夠用profile+filter實現相似功能,以配置jdbc爲例,假設jdbc.properties配置在src/main/resources/ 目錄下,須要設置其中"datasource.url"參數maven

 

一,新建與src同級的filter目錄,在目錄下爲dev,test,local三種環境新建dev.properties,test.properties,local.properties三種過濾文件,裏面都設置了各自環境的datasource.url參數;測試

 

二,修改jdbc.properties的配置爲ui

datasource.url=${datasource.url}

 

三,配置pom文件url

<project>
    <profiles>
        <profile>
            <id>local</id>
            <properties>
                <env>local</env>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <env>test</env>
            </properties>
        </profile>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
        </profile>
    </profiles>
    <build>
        <filters>
            <filter>filter/${env}.properties</filter>
        </filters>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
        </resources>
    </build>
</project>

 

四,打包,若是要打包測試環境的配置的話,就用spa

"mvn -X clean package -Ptest"

若是要打包成dev環境的包的話,就將-P參數設置爲-Pdev,若是不用-P參數的話,默認爲local配置。code

 

五,注意事項:xml

1,filter目錄最好爲src同級目錄,若是爲src子目錄,maven默認會將filter目錄下的幾個環境配置過濾文件也會打包出去,即上面提到的test.properties,local.properties,dev.propertiesblog

2,須要過濾配置的資源目錄,要加上<filtering>true</filtering>標籤,參見資源

<resource>
      <directory>src/main/resources</directory>
      <filtering>true</filtering>
      <includes>
          <include>**/*.*</include>
       </includes>
</resource>

 3,能夠將profiles配置話在父工程中,那樣子工程都不用從新配置了。

相關文章
相關標籤/搜索