多模塊開發的好處:
之前沒怎么接觸過寫多個模塊,大部分時間都是一股腦打包在一個jar里面,但隨之帶來的問題也是顯而易見的,假設DAO層有一個部分需要修改,但是最后卻需要打包整個項目,
這樣其實做了很多無意義的工作,那么如果把DAO層單獨分離出來,單獨打包為jar,提升開發效率。除此之外,就像把DAO,Service,表現層分開的目的一樣,分成不同的模塊
來實現解耦,各個模塊負責自己的功能,並且也可以使用其他項目中。最后,多個模塊也跟利於分工,每個團隊負責不同的模塊,提高效率。
IDEA創建多模塊工程:
與Eclipse不同的是,IDEA中沒有workplace這個概念,在IDEA中只有project和module,project是項目中的最頂級的單元,其次就是module,也就是一個project包含多個module。
project和各個module的關系可以這樣表示:
parent是父工程,所有的子模塊都需要依賴它,再往下,將項目划分為工具類,DAO和service以及表現層(web),每一個模塊都包含一個自己的pom文件,來規定自己的打包方式以及其他依賴。
website-parent--pom.xml (pom)
|
|
|-- website-util
| |-- pom.xml (jar)
|
|-- website-dao
| |-- pom.xml (jar)
|
|-- website-service
| |-- pom.xml (war)
|
|-- website-web
|-- pom.xml (war)
第一步就是創建一個工程了,至於是建空工程與否依情況而定,以建空工程為例,名app
----》
之后就是新建一個父模塊,可以采用maven的骨架來構建,選擇quickstart,暫且命名parent,之后一直next
----》
父模塊沒大改動,在pom文件添加打包方式為pom。
<packaging>pom</packaging>
之后根據自己的項目結構,繼續構建module,如果該部分沒有特殊的功能,比如表現層需要webapp目錄,創建的時候跳過骨架選擇即可,
如果有特殊功能可根據骨架創建。當然,如果不確定直接跳過骨架即可,骨架就是一個搭好的模型罷了,在沒有骨架的模塊上也可以自己創建相應的目錄結構來實現功能。
重點是把各個的模塊的pom文件的依賴和打包方式處理好,這對之后啟動有着很重要的作用。
創建好的項目如圖:
tomcat插件啟動:
在需要啟動的模塊的pom文件添加依賴:
<!-- 配置Tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <path>/</path> <port>8081</port> <server>tomcat7</server> <uriEncoding>UTF-8</uriEncoding> </configuration> </plugin>
參數解釋:
path:訪問的路徑
port:啟動的端口
server:服務器名稱
uriEncoding:字符編碼
這里我在Service和Web層都用了這個插件,但是單憑這個插件是無法啟動的,因為是多模塊的項目,而且Service和Web層都依賴於某些層,所以必須先將其他
模塊打包好,才能正常啟動。
打包的正確順序是,父->子
以上圖為例,先parent再common,再到manager,這些進行后才實現了dao,interface這些層的打包,之后的Service和web依賴於它們,才能正常啟動。
IDEA對maven提供了很好的支持,找到Maven Project選項,可以看到如下
這里實際上是代表了模塊的一個生命周期,所以要使得其他maven模塊也能依賴它們,只需將它們安裝到本地maven庫中就行。
點擊install,再查看本地的maven庫:
可以看到本地倉庫中已經有了相應的jar包
這些工作完成之后就是啟動了,這里我將Service設在8080,將web設在8081
然后配置好名字和需要其他配置
在command line行寫上tomcat7:run (如果后面的7是指tomcat的版本。)
apply之后回到頁面點擊運行符號。
Service啟動:
Web同樣的方法啟動: