通常情况下我们新建maven工程会选择webapp模板来创建新项目
图1
但是创建后的项目只有个web-info目录,目录结构不是很完整
图2
通过使用maven-archetype-plugin插件,可以创建一个自定义的模板
1.准备一个目录结构相对完整的maven项目
2.执行archetype:create-from-project生成archetype项目
图3
3.复制一份archetype并直接打开
图4①archetype是一个可以独立打开的maven项目,打开archetype项目的pom.xml可以发现使用了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目录下)
图5META-INF/maven/archetype-metadata.xml的设置:
fileSet过滤archetype-resources中需要被打包的目录文件,设置packaged="true"项目创建时在java目录根据groupid创建相应的目录,例如:groupid设置为com.demo->生成目录时为java/com/demo
4.可以看到archetype项目的pom.xml中packaging打包方式为maven-archetype,修改groupId、artifactId并直接执行install就可以保存自定义模板项目到本地maven仓库
<groupId>demo.template</groupId>
<artifactId>maven-template-archetype</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-archetype</packaging>
根据groupId、artifactId在本地仓库找到了jar包,并且发现本地仓库的根目录下可以找到一个archetype-catalog.xml(描述了自定义archetype坐标)
图6
5.使用自定义模板创建maven工程:创建maven工程时选择create from archetype并Add archetype输入对应坐标
总体上来说,只要理解了src/main/resources/archetype-resources目录就是将要被打包的模板项目结构,对应着修改想要的目录结构就可以了
网友评论