使用maven-war-plugin動態載入處理環境變數,過濾打包檔案

yesye發表於2021-09-09

在公司使用ANTX作為構建工具,一直以來感覺ANTX的auto-config功能很實用,它很好的將不同環境的打包方式透過properties檔案分離了開來,且ANTX的這部分功能的實現應該是採用Velocity實現,故可以實現非簡單的變數填充的功能,在配置中還可以寫簡單VM的語法。後來構建工具轉型到MAVEN之後一直在尋找一種與ANTX 的autoconfig功能類似的外掛,以解決不同環境打包的動態引數設定問題。經過google後發現了此外掛,此處記錄一下該外掛----maven-war-plugin 。

基本配置 :(包括排除 不想打進war包的jar 的配置) 

                  <!-- 過濾檔案,通常是一個屬性檔案(名值對的形式) --&gt           src/main/webapp/META-INF/auto-config.properties           <!--              ${user.home}/antx.properties          --&gt              communitytag                                 org.apache.maven.plugins               maven-war-plugin               2.1-alpha-1                                  <!--                       打包之前過濾掉不想要被打進 .war包的jar,注意:這個地方,本來路徑應該是                       WEB-INF/lib/anaalyzer-2.0.4.jar,但是經過多次試驗,不能這樣,至於咋回事兒,搞不清楚。。經多方查證均無結果                       暫且這樣吧,雖然顯得很醜陋,但是總能解決問題吧                   --&gt                   */lib/analyzer-2.0.4.jar                                                                     <!-- 元配置檔案的目錄,相對於pom.xml檔案的路徑 --&gt                           src/main/webapp/WEB-INF                              <!-- 是否過濾檔案,也就是是否啟動auto-config的功能 --&gt                           true                              <!-- 目標路徑 --&gt                           WEB-INF                                                                              

  如上配置及到web專案的pom檔案中,且配置中路徑相關的資訊均以pom作為路徑。

應用舉例:

為了能更好的理解這個配置是怎麼回事兒,我們來看看達到了什麼樣的效果,如下: 在應用的配置檔案路徑為 src/main/webapp/WEB-INF/biz/a.xml 有如下配置

   beans PUBLIC "-//SPRING//DTD BEAN//EN" "">                               

  上面的配置中有如下需要動態植入的變數

${communitytag.biz.tair.namespace}

故我們將此變數對應的值配置到屬性檔案src/main/webapp/META-INF/auto-config.properties(pom.xml檔案中filter的配置),如下  

communitytag.biz.tair.namespace=242

至此,執行命令mvn install,我們看看目標檔案targe下的a.xml內容已經動態產生了,如下

   beans PUBLIC "-//SPRING//DTD BEAN//EN" "">                               

結果已經很形象了。。。雖然不能支援像antx那樣對velocity語法的支援,但是此外掛對於大多數環境打包來說,已經足夠了。至於這個plugin的深度的功能研究,待以後有需求的時候繼續研究,記錄在此以便查閱。

原文連結:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2041/viewspace-2811148/,如需轉載,請註明出處,否則將追究法律責任。

相關文章