在Eclipse中創建Maven多模塊工程的例子
如果,你需要創建多個項目,項目之間即獨立又有關系,那么創建一個Maven多模塊項目是個非常好的選擇,也非常cool!怎么在Eclipse里面創建多模塊工程,以及需要注意哪些地方,我在這里做個簡單的介紹。
一、准備
若想在Eclipse里面做這些的話,那么在做這一切前,請確認你是否已經在eclipse里面安裝了maven插件。如果沒有裝插件,那只能通過命令行去做了。
好,現在假設已經在Eclipse里面裝了maven插件,那么我們一起用Eclipse來創建Maven多模塊項目吧!
二、先創建父項目
- 在Eclipse里面New ->
Maven Project
; - 在彈出界面中不要選擇“Create a simple project”(這樣就可以使用archetype來創建項目)
- 使用默認的Archetype(默認:GroupId:org.apache.maven.archetypes,Artifact Id:maven-archetype-quickstart)
- 設置工程的參數,見下圖
- 點擊完成
這樣,我們就按常規模版創建了一個Maven工程。我們還需要對這個工程進行修改。
因為,這是一個父項目,不需要有什么源碼,那么,我們在Eclipse中將這個工程下的不用的目錄都刪除,僅留下pom.xml
文件就行了。刪除后的目錄結構,如下圖:
工程里面還有個Maven Dependencies
,別管他,后面會讓他自動消失。
另外,還需把pom.xml
中的<packaging>jar</packaging>
修改為<packaging>pom</packaging>
這時,可能Eclipse中會顯示工程報錯,根據提示操作,選擇工程然后點擊彈出菜單 Maven -> Update Project
,於是Ok了。
三、創建子項目
- 選中剛建的父項目,在彈出菜單中點擊 New ->
Maven Module
; - 如圖配置
- 使用默認的Archetype(默認:GroupId:org.apache.maven.archetypes,Artifact Id:maven-archetype-quickstart)
- 完成工程配置,見下圖
- 點擊完成
這樣一個子項目就創建完成了,在文件系統中,子項目會建在父項目的目錄中。在父目錄中運行mvn test
等命令,所有的子項目都會按順序執行。
細心一點的人,可能會發現,通過這個步驟創建子項目的同時,會修改父項目的pom.xml
,增加了類似下面的信息:
<modules> <module>module-children1-demo</module> </modules>
這個信息,就是標記有哪些子模塊。
重復創建子項目的步驟,可以創建多個子項目。
四、優化配置
雖然上面的步驟,可以完成多模塊的創建,但是創建出來的多模塊,在一個程序員的眼里,還是挺別扭的,怎么回事呢?對,存在重復。那讓我們重構吧。
按上面步驟創建的子項目,在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>
四、命令行創建
上面就是在Eclipse里面創建多模塊的步驟,和一些優化配置。
其中,具體的步驟可以根據實際情況進行適當的修改,比如選擇Archetype
時,可以根據需要,選擇適當的Archetype
。
上述步驟中的一些環節,也可以先通過命令行來生成雛形,然后再修改pom.xml
來實現。
相關命令為: