在開發過程當中常常要遇到爲不一樣的環境打包,這裏面最主要的問題在於,不一樣環境的配置是不同的,若是爲不一樣環境打包每次都手工修改配置,那不但工做量大,並且很容易出錯。若是用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配置話在父工程中,那樣子工程都不用從新配置了。