maven多模塊項目,多web合並項目使用心得


Fixflow,做中國最好的開源流程引擎!項目地址https://github.com/fixteam/fixflow

 

       此文章適合maven初學者或想接觸maven的用戶,講的只是皮毛,高手請自覺略過。

 

       最近一直在搞fixflow5.2的升級工作,以前只知道maven好用,但是一直沒機會接觸,這次由於工作需要,終於有空看下maven了。

       由於以前項目使用linksource來管理項目結構,用tomcat來調試,習慣了,所以雖然決定用maven,但是還是習慣用tomcat來調試。所以就一直在網上搜maven tomcat  多web,發現都是一些轉載的文章,而且都需要這插件,那插件的,感覺新手無從下手,不過幾天研究下來,覺得其實網上的方案都不是我想要的,其實有更簡單的,下面我就來簡單說下fixflow用maven來構建多web的過程。

       

       關於fixflow的maven結構介紹,可以參考我的另一篇博客http://yang-ch.iteye.com/blog/2032905,這也是我們這篇文章的目標。

 

      這篇文章,我准備分3個部分來介紹:

  1. maven多模塊項目。
  2. maven多web合並項目。
  3. maven多web合並項目在eclipse+tomcat環境下部署和調試。

      maven多模塊項目

        maven多模塊項目需要一個父工程來聚合各個子模塊,不過其實就是需要一個父pom.xml,主要作用是聲明子模塊,代碼如下:

Xml代碼   收藏代碼
  1. <modules>  
  2.     <module>modules/fixflow-core</module>  
  3.     <module>modules/fixflow-expand</module>  
  4.     <module>modules/fixflow-common-api</module>  
  5.     <module>modules/fixflow-common-servlet</module>  
  6.     <module>modules/fixflow-manage-servlet</module>  
  7.     <module>modules/fixflow-webapp-common</module>  
  8.     <module>modules/fixflow-webapp-taskcenter</module>  
  9.     <module>modules/fixflow-webapp-managecenter</module>  
  10.     <module>modules/fixflow-webapp-explorer</module>  
  11.     <module>modules/fixflow-converter</module>  
  12.     <module>modules/fixflow-webapp-editor</module>  
  13. </modules>  

      然后在子模塊中,聲明父工程,子模塊中代碼如下:

Xml代碼   收藏代碼
  1. <parent>  
  2.     <groupId>com.founder.fix.fixflow</groupId>  
  3.     <artifactId>fixflow-root</artifactId>  
  4.     <version>5.0</version>  
  5.     <relativePath>../..</relativePath>  
  6. </parent>  

 

       關於多模塊的文章,網上有很多,也都很詳細,這里不再多說。

 

       maven多web合並項目

        多web項目合並,主要是我在網上找到的資料都不是我最終想要的效果,所以這里就介紹下我最終使用的方案,網上有很多方案都是介紹用caro插件,我到現在也不明白為什么要使用這個插件。

 

        maven的多web模塊maven-war-plugin插件的overlays屬性來處理,最終主web項目pom.xml代碼如下

        

Xml代碼   收藏代碼
  1. <build>    
  2.         <finalName>bpmcenter</finalName>    
  3.         <plugins>    
  4.             <!-- 合並多個war -->    
  5.             <plugin>    
  6.                 <groupId>org.apache.maven.plugins</groupId>    
  7.                 <artifactId>maven-war-plugin</artifactId>    
  8.                 <configuration>    
  9.                     <packagingExcludes>WEB-INF/web.xml</packagingExcludes>      
  10.                     <overlays>    
  11.                         <overlay>    
  12.                             <groupId>com.founder.fix.fixflow</groupId>    
  13.                             <artifactId>fixflow-webapp-taskcenter</artifactId>    
  14.                         </overlay>     
  15.                     </overlays>    
  16.                 </configuration>    
  17.             </plugin>    
  18.         </plugins>   
  19. </build>   

    這里使用到了maven-war-plugin,用overlay屬性已經足夠將多web合並了,只是用的過程中需要注意以下幾點:

  1. 被合並的子web項目packaging屬性必須是war
  2. 被合並的子web項目,必須在主項目中添加依賴關系。
  3. 被合並的子web項目中,如果沒有web.xml,則需要在pom.xml中聲明
    Xml代碼   收藏代碼
    1. <build>  
    2.     <finalName>fixflow-webapp-editor</finalName>  
    3.         <plugins>    
    4.             <plugin>    
    5.                 <groupId>org.apache.maven.plugins</groupId>    
    6.                 <artifactId>maven-war-plugin</artifactId>    
    7.                 <configuration>    
    8.                     <failOnMissingWebXml>false</failOnMissingWebXml>    
    9.                 </configuration>    
    10.             </plugin>       
    11.         </plugins>    
    12. </build>  
     

 

        做完以上幾點,多web項目合並就基本上做完了,運行mvn install就會發現打出的war包中已經存在了其他子模塊的項目。

 

       多web項目在eclipse+tomcat環境下部署調試

 

        在eclipse里面使用,其實更簡單,只是網上的說法太復雜了而已,對於習慣了tomcat開發的用戶來說。

        對於maven項目,一個環境到另一個環境應該只有pom.xml文件和src文件夾就夠了,其他都是用戶根據自己的環境來做的。

  1. 打開eclipse,修改本地maven倉庫地址,導入maven項目,等待構建結束。
  2. 創建server,打開window-prefrences-server-runTime Environment-new ....選擇tomcat路徑,jdk信息,這一步和原來完全一樣。
  3. 打開server視圖,new server,這里選中剛才創建的tomcat,點擊next,這步只需要主web項目添加進來即可。
  4. 雙擊創建的server,選擇將項目發布到tomcat的webapps目錄下,點擊pushlish,完成。

       再去tomcat目錄,發現已經將合並后的web發布到對應目錄下了。引用的其他Java項目已經被打包成jar發布到lib下了,不過你可以打個斷點試試,依然可以調試,修改一段代碼,發現熱部署也是可以的,這樣就和原來的開發習慣完全一樣了。

 

        細心的用戶會發現,其實這完全和我們原來的構建,部署方式完全一樣,是的,maven沒有那么復雜,m2eclipse maven plugin已經幫我們做好了太多的事情,maven只會讓我們項目之間的遷移更方便,更簡潔,這也是我喜歡上maven的重要原因。

 

        我是一個絕對的maven新手,上面的文章用的也只是maven的皮毛而已,maven更多的構建功能還需要深入去研究,上面文章只是想告訴那些想嘗試maven的新手,其實maven不但對代碼管理帶來了很大的方便,而且完全可以不改變我們原有的開發習慣。所以,盡情的擁抱maven吧!


免責聲明!

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



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