Maven--搭建多模塊企業級項目


一. 必要性   

所有用Maven管理的真實的項目都應該是分模塊的,每個模塊都對應着一個pom.xml。它們之間通過繼承和聚合(也稱作多模塊,multi-module)相互關聯。那么,為什么要這么做呢?我們明明在開發一個項目,划分模塊后,導入Eclipse變成了N個項目,這會帶來復雜度,給開發帶來不便。

為了解釋原因,假設有這樣一個項目,很常見的Java Web應用。在這個應用中,我們分了幾層:

    • Dao層負責數據庫交互,封裝了Hibernate交互的類。
    • Service層處理業務邏輯,放一些Service接口和實現相關的Bean。
    • Web層負責與客戶端交互,主要有一些Structs的Action類。

對應的,在一個項目中,我們會看到一些包名:

    • org.myorg.app.dao
    • org.myorg.app.service
    • org.myorg.app.web
    • org.myorg.app.util

這樣整個項目的框架就清晰了,但隨着項目的進行,你可能會遇到如下問題:

    1. 這個應用可能需要有一個前台和一個后台管理端(web或者swing),你發現大部分dao,一些service,和大部分util是在兩個應用中可。這樣的問題,你一周內遇到了好幾次。
    2. pom.xml中的依賴列表越來越長以重用的,但是,由於目前只有一個項目(WAR),你不得不新建一個項目依賴這個WAR,這變得非常的惡心,因為在Maven中配置對WAR的依賴遠不如依賴JAR那樣簡單明了,而且你根本不需要org.myorg.app.web。有人修改了dao,提交到svn並且不小心導致build失敗了,你在編寫service的代碼,發現編譯不過,只能等那人把dao修復了,你才能繼續進行,很多人都在修改,到后來你根本就不清楚哪個依賴是誰需要的,漸漸的,很多不必要的依賴被引入。甚至出現了一個依賴有多個版本存在。
    3. build整個項目的時間越來越長,盡管你只是一直在web層工作,但你不得不build整個項目。
    4. 某個模塊,比如util,你只想讓一些經驗豐富的人來維護,可是,現在這種情況,每個開發者都能修改,這導致關鍵模塊的代碼質量不能達到你的要求。

我們會發現,其實這里實際上沒有遵守一個設計模式原則:“高內聚,低耦合”。雖然我們通過包名划分了層次,並且你還會說,這些包的依賴都是單向的,沒有包的環依賴。這很好,但還不夠,因為就構建層次來說,所有東西都被耦合在一起了。因此我們需要使用Maven划分模塊。

二. 怎么做

   1. 創建pom根目錄,搭建多模塊項目,必須要有一個packaging為pom的根目錄。新建一個maven項目,pom.xml的文件如下圖。:

 

2. 新建項目模塊

輸入你的項目名稱

這里就不重復說創建項目了,創建好的目錄結構在eclipse中如下:

備注:創建這些項目的時候,只有easyframework-web是web項目即maven的:maven-archetype-webapp,其他的都是java項目:maven-archetype-quicktart

打開easyframework-root的pom.xml文件,你會看到模塊化是這樣的:

 


免責聲明!

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



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