Maven--搭建多模塊企業級項目(持續完善中)

出處:https://www.cnblogs.com/onmyway20xx/p/7305219.html

一. 必要性   

所有用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

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

這個應用可能需要有一個前臺和一個後臺管理端(web或者swing),你發現大部分dao,一些service,和大部分util是在兩個應用中可。這樣的問題,你一週內遇到了好幾次。

  1. pom.xml中的依賴列表越來越長以重用的,但是,由於目前只有一個項目(WAR),你不得不新建一個項目依賴這個WAR,這變得非常的噁心,因爲在Maven中配置對WAR的依賴遠不如依賴JAR那樣簡單明瞭,而且你根本不需要org.myorg.app.web。有人修改了dao,提交到svn並且不小心導致build失敗了,你在編寫service的代碼,發現編譯不過,只能等那人把dao修復了,你才能繼續進行,很多人都在修改,到後來你根本就不清楚哪個依賴是誰需要的,漸漸的,很多不必要的依賴被引入。甚至出現了一個依賴有多個版本存在。
  2. build整個項目的時間越來越長,儘管你只是一直在web層工作,但你不得不build整個項目。
  3. 某個模塊,比如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文件,你會看到模塊化是這樣的:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章