1. 程式人生 > >Maven--搭建多模塊企業級項目

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

build 設計模式原則 有用 不清楚 必須 eight 都對 webapp clip

一. 必要性

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

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

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

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

  1. org.myorg.app.dao
  2. org.myorg.app.service
  3. org.myorg.app.web
  4. 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文件,你會看到模塊化是這樣的:

技術分享圖片

來源:https://www.cnblogs.com/onmyway20xx/p/7305219.html

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