如果,你需要創(chuàng )建多個(gè)項目,項目之間即獨立又有關(guān)系,那么創(chuàng )建一個(gè)Maven多模塊項目是個(gè)非常好的選擇,也非常cool!怎么在Eclipse里面創(chuàng )建多模塊工程,以及需要注意哪些地方,我在這里做個(gè)簡(jiǎn)單的介紹。
若想在Eclipse里面做這些的話(huà),那么在做這一切前,請確認你是否已經(jīng)在eclipse里面安裝了maven插件。如果沒(méi)有裝插件,那只能通過(guò)命令行去做了。
好,現在假設已經(jīng)在Eclipse里面裝了maven插件,那么我們一起用Eclipse來(lái)創(chuàng )建Maven多模塊項目吧!
Maven Project ; 設置工程的參數,見(jiàn)下圖

這樣,我們就按常規模版創(chuàng )建了一個(gè)Maven工程。我們還需要對這個(gè)工程進(jìn)行修改。
因為,這是一個(gè)父項目,不需要有什么源碼,那么,我們在Eclipse中將這個(gè)工程下的不用的目錄都刪除,僅留下 pom.xml 文件就行了。
Maven Module ; 

這樣一個(gè)子項目就創(chuàng )建完成了,在文件系統中,子項目會(huì )建在父項目的目錄中。在父目錄中運行 mvn test 等命令,所有的子項目都會(huì )按順序執行。
細心一點(diǎn)的人,可能會(huì )發(fā)現,通過(guò)這個(gè)步驟創(chuàng )建子項目的同時(shí),會(huì )修改父項目的 pom.xml ,增加了類(lèi)似下面的信息:
<modules> <module>module-children1-demo</module></modules>這個(gè)信息,就是標記有哪些子模塊。
重復創(chuàng )建子項目的步驟,可以創(chuàng )建多個(gè)子項目。
雖然上面的步驟,可以完成多模塊的創(chuàng )建,但是創(chuàng )建出來(lái)的多模塊,在一個(gè)程序員的眼里,還是挺別扭的,怎么回事呢?對,存在重復。那讓我們重構吧。
按上面步驟創(chuàng )建的子項目,在 pom.xml 中有個(gè) parent 節點(diǎn),所以,他可以繼承父項目的相關(guān)信息。沒(méi)錯,父子項目中存在繼承關(guān)系。
在子項目的 pom.xml 中,子項目的 groupId 和 version 一般和父項目相同,那么可以把子項目的這兩個(gè)參數刪除,這樣會(huì )自動(dòng)繼承父項目的取值。
同樣,如果其他的一些屬性,所有子項目都是一樣的,那么可以上移到父項目中設置,子項目中無(wú)需重復設置。比如: <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 可以?xún)H在父項目中設置一次。
除了這種情況以外,還有一種情況,就是依賴(lài)和插件。依賴(lài)和插件的情況是這樣,某一個(gè)依賴(lài)或插件可能會(huì )被大部分子項目所使用,但是也可能有些子項目不需要使用,這樣使用上述的方式,簡(jiǎn)簡(jiǎn)單單地進(jìn)行繼承就不合適了。
Manen提供 dependencyManagement 和 pluginManagement 兩個(gè)標簽。使用這兩個(gè)標簽,可以在父項目中統一管理依賴(lài)和插件的配置參數,比如版本號啥的。而在子項目中,僅需列出需要使用的依賴(lài)和插件的 groupId 和 artifactId 就可以了,其他信息會(huì )自動(dòng)從父項目管理的信息里面獲取。
看例子,父項目中:
<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里面創(chuàng )建多模塊的步驟,和一些優(yōu)化配置。
其中,具體的步驟可以根據實(shí)際情況進(jìn)行適當的修改,比如選擇 Archetype 時(shí),可以根據需要,選擇適當的 Archetype 。
上述步驟中的一些環(huán)節,也可以先通過(guò)命令行來(lái)生成雛形,然后再修改 pom.xml 來(lái)實(shí)現。
相關(guān)命令為:
mvn archetype:generate -DarchetypeCatalog=internal -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart 工程創(chuàng )建后需要修改 pom.xml .修改方式,可以參考上面說(shuō)到的內容。
聯(lián)系客服