通常情況下我們新建maven工程會(huì)選擇webapp模板來(lái)創(chuàng)建新項(xiàng)目
但是創(chuàng)建后的項(xiàng)目只有個(gè)web-info目錄沾乘,目錄結(jié)構(gòu)不是很完整
通過(guò)使用maven-archetype-plugin插件巴比,可以創(chuàng)建一個(gè)自定義的模板
1.準(zhǔn)備一個(gè)目錄結(jié)構(gòu)相對(duì)完整的maven項(xiàng)目
2.執(zhí)行archetype:create-from-project生成archetype項(xiàng)目
3.復(fù)制一份archetype并直接打開
①archetype是一個(gè)可以獨(dú)立打開的maven項(xiàng)目钳枕,打開archetype項(xiàng)目的pom.xml可以發(fā)現(xiàn)使用了maven-archetype-plugin插件
②src/main/resources/archetype-resources目錄下是將要被打包的模板項(xiàng)目結(jié)構(gòu)
③需要補(bǔ)充完善archetype-resources目錄下結(jié)構(gòu),例如:我在webapp文件夾中添加了css、js目錄,在src/main目錄下添加了java、resources目錄嵌屎。
④另外還需要在archetype的pom.xml中添加maven-resources-plugin,設(shè)置includeEmptyDirs包含空目錄(maven-compiler-plugin編譯Java代碼恍涂,maven-resources-plugin處理資源文件默認(rèn)目錄src/main/resources宝惰,這里的archetype-resources模板在archetype項(xiàng)目的resources目錄下)
META-INF/maven/archetype-metadata.xml的設(shè)置:
fileSet過(guò)濾archetype-resources中需要被打包的目錄文件,設(shè)置packaged="true"項(xiàng)目創(chuàng)建時(shí)在java目錄根據(jù)groupid創(chuàng)建相應(yīng)的目錄乳丰,例如:groupid設(shè)置為com.demo->生成目錄時(shí)為java/com/demo
4.可以看到archetype項(xiàng)目的pom.xml中packaging打包方式為maven-archetype掌测,修改groupId、artifactId并直接執(zhí)行install就可以保存自定義模板項(xiàng)目到本地maven倉(cāng)庫(kù)
<groupId>demo.template</groupId>
<artifactId>maven-template-archetype</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-archetype</packaging>
根據(jù)groupId产园、artifactId在本地倉(cāng)庫(kù)找到了jar包汞斧,并且發(fā)現(xiàn)本地倉(cāng)庫(kù)的根目錄下可以找到一個(gè)archetype-catalog.xml(描述了自定義archetype坐標(biāo))
5.使用自定義模板創(chuàng)建maven工程:創(chuàng)建maven工程時(shí)選擇create from archetype并Add archetype輸入對(duì)應(yīng)坐標(biāo)
總體上來(lái)說(shuō),只要理解了src/main/resources/archetype-resources目錄就是將要被打包的模板項(xiàng)目結(jié)構(gòu)什燕,對(duì)應(yīng)著修改想要的目錄結(jié)構(gòu)就可以了