知識點:聚合、繼承、工程依賴、單元測試、多war聚合、cargo發佈html
① 準備工做java
參考資料web
http://www.cnblogs.com/quanyongan/archive/2013/05/28/3103243.html http://www.cnblogs.com/xdp-gacl/p/4242221.html http://blog.csdn.net/abing37/article/details/4951154 http://my.oschina.net/ydsakyclguozi/blog/411977?fromerr=I7N1vOPq http://kyfxbl.iteye.com/blog/1680045 http://blog.csdn.net/steveguoshao/article/details/38414145
安裝maven插件數據庫
基於eclipse建立maven項目,若是沒有maven插件,請先安裝maven插件。api
② 確立模塊結構和依賴關係app
模塊結構eclipse
|-easyframework-root:總控項目,只包含一個pom.xml文件。webapp
|-easyframework-web :整個項目的web層,頁面顯示以及控制層。maven
|-easyframework-core:核心業務項目,主要是Service處理業務邏輯。工具
|-easyframework-persist:數據持久層,操做底層數據庫。
|-easyframework-model:數據模型,與數據庫表字段對應的實體類。
|-easyframework-utils:工具類,全部工具類都提取出來寫在這個項目中。
特別說明:建立項目時,只有easyframework-web是web項目(maven-archetype-webapp)打war包,其餘則是java項目(maven-archetype-quicktart),打jar包。
各模塊依賴關係
web 依賴 core model util
core 依賴 persist model util
persist 依賴 model
③ 建立總控項目 easyframework-root
特色
一、建立時類型爲Maven Project
二、沒有實際代碼和資源文件,只有pom.xml文件
三、packaging節點值爲pom
四、繼承性:dependences 聲明的依賴能夠被子模版繼承使用,properties 聲明的變量能夠被子模版使用。好處是在各個子模塊中不須要一遍又一遍的重複添加一樣的依賴元素,且若是在子項目中也有一樣的依賴,則會覆蓋父POM中的值。
五、子模塊用modules和module元素聲明
做用:承擔聚合模塊和父模塊的做用,實現對全部子模塊的統一管理,編譯和部署。
④ 建立web子項目 easyframework-web
特色
一、建立時類型爲Maven Module - maven-archetype-webapp
二、與其餘子項目不一樣的是,包含有webapp
三、packaging節點值爲war
四、聲明父容器的節點爲parent
做用:做爲web層使用,而且最終做爲容器的war包存在。
⑤ 建立其餘子模塊
特色:
一、建立時類型爲Maven Module - maven-archetype-quicktart
二、packaging節點值爲jar
三、聲明父容器的節點爲parent
四、根據子模塊各自不一樣的依賴關係配置相互的依賴
⑥ 優化配置
按上面步驟建立的子項目,在pom.xml
中有個parent
節點,因此,他能夠繼承父項目的相關信息。沒錯,父子項目中存在繼承關係。
在子項目的pom.xml
中,子項目的groupId
和version
通常和父項目相同,那麼能夠把子項目的這兩個參數刪除,這樣會自動繼承父項目的取值。
一樣,若是其餘的一些屬性,全部子項目都是同樣的,那麼能夠上移到父項目中設置,子項目中無需重複設置。好比:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
能夠僅在父項目中設置一次。
除了這種狀況之外,還有一種狀況,就是依賴和插件。依賴和插件的狀況是這樣,某一個依賴或插件可能會被大部分子項目所使用,可是也可能有些子項目不須要使用,這樣使用上述的方式,簡簡單單地進行繼承就不合適了。
Manen提供dependencyManagement
和pluginManagement
兩個標籤。使用這兩個標籤,能夠在父項目中統一管理依賴和插件的配置參數,好比版本號啥的。而在子項目中,僅需列出須要使用的依賴和插件的groupId
和artifactId
就能夠了,其餘信息會自動從父項目管理的信息裏面獲取。
看例子,父項目中:
<dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.5</version> <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5</version> </dependency> </dependencies> </dependencyManagement>
在子項目中:
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies>