Maven實戰(八)---模塊劃分

爲了防止傳遞依賴,我們各個模塊之間儘量用直接依賴的方式。本篇文章介紹多模塊化開發,我們做過Maven項目的都知道,我們的項目一般都是分模塊的,每個模塊都會對應着一個POM.xml文件,它們之間通過繼承和聚合(也稱多模塊,multi-module)相互關聯。

 

         我們換另一種思路想想,那麼我們能不能一個項目就用一個模塊。這樣開起來很方便,簡單明瞭,那麼做起來呢,接下來我們分析一下。

 

         假設我們有這麼一個項目,整個項目構建一個war包,而每一層放到各自的Package裏面。如下:

Itoo-Exam

com.tgb.itoo.exam.dao  -----負責與數據庫的交互,封裝了Hibernate的交互類

com.tgb.itoo.exam.service----負責處理業務邏輯,放Service接口及其實現類

com.tgb.itoo.exam.web-------負責與客戶端的交互,主要放action/controllerjsp等等

com.tgb.itoo.exam.util--------工具類

 

那麼隨着我們項目的擴大,Maven項目也會越來越大,那麼會遇到下面的幾個問題:

1、首先build整個項目的時間越來越長,儘管你一直在web層工作,但你不得不build整個項目

 

2、模塊化體現不出來,如果我們只負責維護某個模塊,因爲我們所有的模塊都在一個war包中,那麼我們可以隨意修改其他模塊(權限的控制),導致版本管理混亂,衝突。同時因爲模塊太多,太大,不好維護。

很多人都在同時修改這個war包,將導致工作無法順利進行。

 

3pom.xml本來是可以繼承、複用的,但是如果我們新建一個項目,只能依賴於這個war包,那麼會把這個war包的相關的前臺的東西依賴過來,導致項目管理混亂。

 

        這樣的管理是混亂的,沒有遵守一個設計模式原則:“高內聚,低耦合”。相反在代碼內部,所有的東西都耦合在了一起。因此我們需要劃分模塊。

 

       另外,隨着技術的飛速發展和各類用戶對軟件的要求越來越高,軟件本身變得越來越複雜,設計人員開始採用各種方式進行開發,於是就有了我們的分層架構、分層模塊來提高代碼的清晰和重用。從而實現了系統內部的高內聚、低耦合。


實際上我們項目的包結構:

 

Itoo-root (pom.xml pom)

Itoo-base-parent(pom.xml pom)

Itoo-basepom.xmljar包)

Itoo-toolpom.xmljar包)

 

Itoo-exam-parent (pom.xml pom)

Itoo-exam-api        (pom.xml jar)

Itoo-exam-student-core  (pom.xml jar)

Itoo-exam-student-web  (pom.xml war)

Itoo-exam-student-ear   (pom.xml ear)

 

如上關係圖,pom包的全是父項目,用來管理子項目的jar包。parent裏面聚合了很多子項目。

 

模塊的依賴關係:

Itoo-base--->itoo-tool

Itoo-exam-api-->itoo-base

Itoo-exam-student-core--->itoo-exam-api

Itoo-exam-student-web--->itoo-exam-api

 

模塊化的好處

          1、方便重用,當我們再開發一條teacher線的時候,我們只需要引用itoo-base,itoo-exam-api,這些包都是複用的,稱爲我們平臺複用的基礎類庫,供所有的項目使用。這是模塊化最重要的一個目的。


          2、劃分了模塊,包之間的依賴關係非常清晰,包的版本管理也非常清晰,不用再到一個混亂的pom中修改自己的配置了。


          3、靈活性。比如我們這些公共的jar包,itoo-base,itoo-tool,itoo-exam-api等這些jar包,我們不需要再當源碼,只需要deploynexus,其他人從nexus下載即可。代碼的可維護性、可擴展性好,並且保證了項目獨立性與完整性。


            4build項目的時候,只需要build自己所需要的項目,不僅節省時間而且結構清晰。


            5、上篇文章寫得DependencyManagementdependencies,父項目中管理jar包版本。使得整個項目的測試版本與發佈版本一致。

 

        使用模塊化配置,複用性強,防止pom變得過於龐大,方便構建;針對項目的管理更方便,每一個模塊都是獨立的,抽象出一個父類來管理第三方jar的版本,開發人員只需要開發自己的線,其他的都不用管,靈活;基於此種基礎我們還可以做分佈式。

 

         上面提到了我們用父項目聚合子項目,子項目繼承父項目。下篇博客我們繼續介紹Maven模塊的聚合和繼承。

發佈了6 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章