1. 程式人生 > >maven(八)繼承和聚合

maven(八)繼承和聚合

1、maven的聚合

聚合就是將多個專案合成一個大的,完整的專案。比如我們常用的dao,service,controller層就可以聚合為一個專案執行。

首先我們建立一個簡單的實體類專案entities,配置pom檔案。
這裡寫圖片描述

主要配置專案編碼和jdk版本即可。接著建立使用者類User:
這裡寫圖片描述

主要有id,name,pwd三個屬性,一個構造方法和一個toString方法。這樣一個簡單的實體類專案就完成了。

然後我們建立dao層的專案。配置pom檔案。

這裡寫圖片描述

這個只是比entities的pom檔案多了一個junit的依賴。然後建立dao層,但是我們需要用到entities裡的User物件,怎麼辦呢,很簡單,回到entities專案,執行clean install就可以了,這樣entities專案自動打包釋出到本地倉庫中,然後在dao的pom檔案中加入entities的依賴,這樣就可以了。由於主要寫的是maven的用法,就簡化對資料庫的操作了。

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述
接著寫測試類:

這裡寫圖片描述

執行clean test命令:

這裡寫圖片描述

效果不錯,測試全部成功。OK。接下來就寫聚合專案了。new -> other - > maven ->這裡選中create a
simple project。groupId和artifactId、version和前面是一樣的。注意:這裡packaging需要改為pom型別,這樣聚合專案就建立成功了。
這裡寫圖片描述

接下來把entities專案和dao專案聚合起來,在pom檔案中配置即可。

這裡寫圖片描述

module中配置entities和dao專案的相對路徑即可。接下來執行clean package試試看:哎呦,不錯哦。測試成功,模組也聚合起來了。

這裡寫圖片描述

2、maven繼承

聚合之後發現配置檔案中有好多配置是相同的,這樣就出現了沉餘,解決這個問題就可以用maven的繼承即可。和java的繼承是一樣的,父類是模版,子類繼承父類。這樣像常量,依賴,外掛都可以不用再聲明瞭。也不用擔心依賴版本不同帶來的不便。其實繼承和聚合的專案建立是一樣的,正常專案也不會將倆個分開寫,所以我就直接在聚合專案中寫了。我們將entities和dao專案需要的都加入聚合aggregator專案的配置檔案中。

這裡寫圖片描述

接著將entities和dao專案中的依賴去掉,只需要在parent節點中加入父類的資訊及相對路徑即可:

這裡寫圖片描述

這裡寫圖片描述

注意dao層依賴的entities不可以提到aggregator中。因為entities專案不可能定位到自己。

每一個模組節省了許多重複配置,每一個模組少了版本號,groupId等資訊。因為被繼承了,所以不需要配置了。下列是可以被繼承的元素:
groupId:專案組Id
version:版本資訊
discription:描述資訊
orrganization:專案組織資訊
inceptionYear:專案建立年份
url:專案連結地址
developer:開發人
contributors:專案貢獻者
distributionManagement:專案部署配置
issueManagement:專案問題跟蹤資訊
ciManagement:專案持續繼承資訊
scm:專案版本控制資訊
mailingLists:郵件列表資訊
properties:自定義常量屬性資訊
dependencies:專案依賴配置
dependenciesManagement:專案依賴管理配置
repositories:專案倉庫配置
build:專案原始碼目錄、輸出目錄、外掛、外掛管理配置
reporting:專案的報告輸出目錄,報告外掛位置

可能現在有人有疑問了,我在entities專案中沒有用到junit啊,這樣我打包的時候會將junit的jar打包進專案,這樣父類所有的jar都會到子專案中,打包的檔案太大,佔用資源啊。解決這個問題我們可以用到上面提到的dependenciesManagement來解決。因為他只是配置依賴了,但是如果子專案想用必須,必須加入依賴才可以使用。

aggregator:
這裡寫圖片描述

dao:
這裡寫圖片描述

好了,大功告成!!!!