Maven為不同環境配置打包


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

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

 

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

 

二,修改jdbc.properties的配置為

datasource.url=${datasource.url}

 

三,配置pom文件

<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>

 

四,打包,如果要打包測試環境的配置的話,就用

"mvn -X clean package -Ptest"

如果要打包成dev環境的包的話,就將-P參數設置為-Pdev,如果不用-P參數的話,默認為local配置。

 

五,注意事項:

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

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

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

 3,可以將profiles配置話在父工程中,那樣子工程都不用重新配置了。


免責聲明!

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



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