因爲本人 最近忙着公司事情,昨天沒有寫博客,今天就繼續寫吧web
需求:因爲最近開發clover項目 ,沒有使用spring,更沒有使用任何框架,而使用J2EE的web工程,因此鏈接ZK和MongoDB、Redis等服務器需用指定properties文件,redis
而目前公司又分各套環境(dev、test、product),因此但願打包的時候 根據profile id 來動態使用不一樣環境properties文件 或者動態修改properties參數值spring
方法一:使用一套properties配置文件,但具體參數使用${key}佔位符方式打包替換apache
maven的pom中指定每套環境的參數值服務器
咱們還要啓動resources的filter過濾器:框架
按照上述配置後,咱們執行maven打包操做後:maven
咱們能夠看到mongoDBConfig.properties、redisConfig.properties、zkConfig.properties等文件都被替換到指定環境的參數了ui
因爲 有些老系統會在項目中的resources下指定各套環境配置文件,以下圖片:spa
可是咱們打包後 只但願將指定環境下的*.properties文件都移動到classes下,因此能夠考慮使用方法二插件
方法二:使用maven-antrun-plugin插件方式實現
咱們只在打包dev環境:
咱們要指定resources.dir目錄爲src/main/resources/dev
咱們增長一個plugin 爲maven-antrun-plugin,因爲我只要在子工程clover-core下面移動這幾個文件,最終打成一個jar包,因此要把這個plugin代碼放在clover-core下的pom.xml文件,若是把這個plugin放在父工程的pom.xml下那就移動全部的子工程下resources文件
仍是貼上代碼吧:
<build> <finalName>clover-core-${clover.version}</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>compile</id> <phase>compile</phase> <configuration> <tasks> <echo message="********************** copy resources to classpath*************************"/> <echo message="********************** copy ${resources.dir} to classpath*************************"/> <copy todir="target/classes" overwrite="true"> <fileset dir="${resources.dir}"> <include name="*.*"/> <include name="*/*.*"/> </fileset> </copy> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources></build>
咱們執行打包後:
咱們能夠看到clover-core下已經將這幾個*.properties移動到classes下了
我的仍是比較推薦第一種方式
PS:有的時候 咱們想經過動態打包,生成的子工程的名字是帶各套環境, 好比:clover-core-dev-1.0.jar
咱們在父工程的profile下設置clover.version
子工程clover-core想最終打包是clover.version指定的環境+版本號:
<version>${clover.version}</version> ---這個將會打包後deploy中央私庫後最終的version
<finalName>clover-core-${clover.version}</finalName> --這個就是子工程clover-core打包最終名字
咱們執行打包後:
私庫
當咱們打war包的時候,咱們也能夠指定依賴模塊的版本號:
咱們這裏面使用的 profile配置的環境version,但讓你想本身改爲別的版本,你打包後就能夠看到某個依賴的jar包就是你指定的版本
咱們把clover-core的版本改爲dev-1.0
再把clover-core的pom.xml
打包後 咱們看下war包中:
但我看下clover-core子工程下的target:
原來是這樣的
maven用的時間卻是很長,但大多時間都是一次配置後,再沒有修改後,而後開發項目,但有些細節 最終沒有研究那麼明白
文章寫的有點水,但願對您受用,謝謝