1. 程式人生 > >Maven--搭建多模組企業級專案

Maven--搭建多模組企業級專案

一. 必要性   

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