通常情況下我們新建maven工程會選擇webapp模板來創(chuàng)建新項目

但是創(chuàng)建后的項目只有個web-info目錄,目錄結構不是很完整

通過使用maven-archetype-plugin插件,可以創(chuàng)建一個自定義的模板
1.準備一個目錄結構相對完整的maven項目
2.執(zhí)行archetype:create-from-project生成archetype項目

3.復制一份archetype并直接打開
①archetype是一個可以獨立打開的maven項目,打開archetype項目的pom.xml可以發(fā)現(xiàn)使用了maven-archetype-plugin插件
②src/main/resources/archetype-resources目錄下是將要被打包的模板項目結構
③需要補充完善archetype-resources目錄下結構,例如:我在webapp文件夾中添加了css、js目錄,在src/main目錄下添加了java、resources目錄。
④另外還需要在archetype的pom.xml中添加maven-resources-plugin,設置includeEmptyDirs包含空目錄(maven-compiler-plugin編譯Java代碼,maven-resources-plugin處理資源文件默認目錄src/main/resources,這里的archetype-resources模板在archetype項目的resources目錄下)

META-INF/maven/archetype-metadata.xml的設置:
fileSet過濾archetype-resources中需要被打包的目錄文件,設置packaged="true"項目創(chuàng)建時在java目錄根據(jù)groupid創(chuàng)建相應的目錄,例如:groupid設置為com.demo->生成目錄時為java/com/demo

4.可以看到archetype項目的pom.xml中packaging打包方式為maven-archetype,修改groupId、artifactId并直接執(zhí)行install就可以保存自定義模板項目到本地maven倉庫
<groupId>demo.template</groupId>
<artifactId>maven-template-archetype</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-archetype</packaging>
根據(jù)groupId、artifactId在本地倉庫找到了jar包,并且發(fā)現(xiàn)本地倉庫的根目錄下可以找到一個archetype-catalog.xml(描述了自定義archetype坐標)

5.使用自定義模板創(chuàng)建maven工程:創(chuàng)建maven工程時選擇create from archetype并Add archetype輸入對應坐標
總體上來說,只要理解了src/main/resources/archetype-resources目錄就是將要被打包的模板項目結構,對應著修改想要的目錄結構就可以了