- 父工程:父工程又稱為父控制器,只是一個簡單的工程,不能單獨運行。作用是將子模塊跟子工程聚合在一起。父控制器中的pom.xml配置,在子模塊跟子工程中都可以被繼承。
- 子工程:項目中創建的具有業務邏輯並且可以單獨部署的的子模塊稱為子工程,一個項目中不同的子工程通過在pom.xml中添加同一個父工程而整合在一起。
- 子模塊:提取出了一些子工程中通用的模塊,做成jar包。當子工程需要使用的時候只要在pom.xml中添加依賴就好了。
創建父工程
- 打開eclipse,右鍵new->project,找到maven,選擇maven Project點擊next。

2、勾選創建一個簡易工程Create a simple project

3、填寫組名跟項目名,注意packaging一定要選擇pom

4、父控制器創建好之后,刪除自動生成的src文件夾

至此,父控制器就創建好了,讓我們來看一下父控制器的pom.xml

只有一些簡單的控制器的坐標信息以及打包方式。我們接着往下操作。
創建子模塊
- 選中剛剛創建的maven項目右鍵->maven->New Maven Module Project

2、Module Name填寫自己的子項目名,點擊next

3、一般的jar工程選擇maven-archetype-quickstart模板,web工程選擇maven-archetype-webapp模板。選完之后next

4、Package里是系統默認生成的包,建議改成自己的包名,修改完點finish。

這樣就創建好了一個子模塊,如果要創建多個子模塊重復上面的步驟即可。
這里我創建了3個jar工程1個web工程。如圖

其中maven-web為web工程,可以發布到tomcat上進行部署啟動。maven的父子工程也就創建完畢了。
此時我們可以再來看看父控制器的pom.xml發生了什么變化

我們發現父控制器的pom.xml中多出了modules標簽。里面的各個module就是你所創建的子模塊。就是這段modules標簽,將各個子模塊聚合到一起使之成為一個完整的大工程。
為什么要使用父子工程
相比於原先的創建項目方式,我認為有以下優點
- 父子工程對於模塊的分離程度更高了
看一個例子:
按照以往的創建項目方式,一個maven項目就是一個大工程,一開始還能進行簡單的測試編譯,但是隨着項目的不斷變大和復雜化,后期再做改動則可能牽一發而動全身。但是使用父子工程,每個模塊都是獨立的,他們通過父控制器聚合在一起,這樣當你要改動一個模塊的時候你改動的也只是這一個模塊而已,並不會影響其他的模塊。
- 父子工程使代碼更清晰,提高了重用
看一個例子:
父控制器的存在之一就是為了去除重復
一個項目存在多個模塊,可能同時由多個人開發,比如abc3個模塊,3個模塊都是基於spring的那么3個開發都需要引入spring的核心jar包,這樣就引入了3份,但是使用父子工程,則只需要在父工程中引入了,則子工程自動繼承。
參考: https://blog.csdn.net/nvisalsd/article/details/80803277
http://blog.sina.com.cn/s/blog_15fb5fc170102y35w.html
