上一篇写了纯手工的Maven构建,主要是为了熟悉Maven项目的基本结构,体会Maven默认的约定规则以及构建项目基本的Maven命令,但是不适用于平常开发,因为太浪费时间。因此Maven提供了Archetype帮助我们快速构建项目骨架,Archetype是原型的意思,在这里更贴切的说法应该是模板,也就是说根据Maven提供的模板来快速创建项目的骨架。
一、如何使用Archetype构建项目骨架
使用Archetype创建项目骨架的命令是:mvn archetype:generate 控制台打印结果如下:(这只是一部分,列表可选项在1000个左右)
二、Archetype 列表来源
当用户不指定Archetype坐标的方式使用maven-archetype-plugin的时候,会得到一个Archetype列表供选择,这个列表的信息来源于名为archetype-catalog.xml的文件,那么这个文件在什么位置呢?我曾经犯2的去搜索这个文件,结果发现电脑上根本不存在这个文件。但是,这个文件是确实存在的,只是你需要指定Archetype Catalog的来源,详细来说,就是你需要指定maven-archetype-plugin从什么地方读取archetype-catalog.xml文件。下面是Maven提供的几个Archetype Catalog的来源:
- local:指向用户本地的Archetype Catalog.其位置尾~/.m2/archetype-catalog.xml,但是默认是不存在的,也就是为什么搜索找不到的原因
- internal:这是maven-archetypr-plugin内置的Archetype Catalog
- remote:指向maven中央仓库的Archetype Catalog,这是默认的Catalog来源,也就是说mvn archetype:generate指令默认情况下是从中央仓库读取archetype-catalog.xm,但一般情况下我们只需要读取内置的就可以了,在指令后面加Catalog来源
mvn archetype:generate-DarchetypeCatalog=internal
再来看一下结果:(大约在60个左右)
三、常用Archetype介绍
1.maven-archetype-quickstart
这个可能是最常用的Archetype,一般窗口提示用户选择Archetype的默认值。使用maven-archetype-quickstart生成的项目骨架基本内容如下:
- 一个包含Junit依赖声明的pom.xml
- src/main/java主代码目录及该目录下一个名为App的输出“Hello World!”的类
- src/test/java测试代码目录及该目录下一个名为AppTest的JUnit测试用例
2.maven-archetypr-webapp
最简单Maven war项目模板,当需要快速创建一个Web应用的时候就可以使用它。生成的项目内容如下
- 一个packaging为war且带有JUnit依赖声明Pom.xml
- src/main/webApp/目录
- src/main/webApp/index.jsp文件,一个简单的Hello World页面
- src/main/webapp/WEB-INF/web.xml文件。一个基本为空的Web应用配置文件