一、背景
最近部門的項目進行多模塊拆分,一個maven模塊裏包含多個maven子模塊,爲了方便創建多模塊,部門年輕的架構師(我很佩服他)用maven-archetype來創建多模塊骨架,然後創建多模塊就方便多了。
二、創建多模塊骨架
1、首先創建父模塊
<groupId>com.cn.dl</groupId>
<artifactId>biz-base-archetype</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
2、然後創建兩個子模塊,這個根據自己的項目結構來創建
<modules>
<module>biz-base-archetype-service</module>
<module>biz-base-archetype-impl</module>
</modules>
3、最後創建好的模塊結構
4、接下來根據創建的模版來生成骨架
進入當前項目的根目錄,例如:cd biz-base-archetype/目錄下,然後執行命了:maven archetype:create-from-project
初次需要下載很多jar包,時間稍微有點長,成功之後,可以看到下面內容
子模塊的命名是父模塊的命名 + 子模塊的功能名,例如這裏父模塊是biz-base-archetype,子模塊中,一個提供接口,一個提供具體實現,那麼子模塊最終的命名:biz-base-archetype-service、biz-base-archetype-impl,模版裏面是通過__rootArtifactId__佔位符來替換自己創建的父模塊的artifactId,這樣最終生成的模塊就是嚴格按照父模塊的artifactId來命名。
5、生成骨架成功之後,發佈到本地倉庫,執行命令mvn install
進入 target/generated-sources/archetype/目錄下,然後執行mvn install
最後在本地倉庫就可以找到對應的模版
三、使用模版
1、添加模塊
這樣模版就添加成功了
2、選中biz-base-archetype-archetype,創建模塊biz-task-api
一路next,不需要改動!!!
到這裏使用自己創建的骨架模塊創建多模塊就OK了,是不是很爽!
四、可能出現的問題:
1、發現創建的多模塊沒有src/main/java目錄,模塊創建成功之後還要去創建目錄,這樣多麻煩,網上說在模塊創建時,添加參數archetypeCatalog=internal 、archetype=Internal,貌似都不起作用,最後發現是archetype-metadata.xml裏面沒有申明去創建src/maven/java和src/main/resources目錄!所以,在骨架模塊裏面創建Test.java、test.properties兩個空文件
然後重新按照前面的步驟執行maven archetype:create-from-project、然後刪除本地倉庫中的骨架模版,再執行 mvn install
接下來再重新創建模塊,就包含src/maven/java和src/main/resources這兩個目錄了!