在编写本书的时候,Maven中央仓库中已经包含了249个Archetype(详见http://repo1.maven.org/maven2/archetype-catalog.xml)。此外,还有大量没有发布到中央仓库的Archetype分布在其他Maven仓库中。任何人都不可能全部了解它们,因此这里只介绍几个比较常用的Archetype。
1.maven-archetype-quickstart
maven-archetype-quickstart可能是最常用的Archetype,当maven-archetype-plugin提示用户选择Archetype的时候,它就是默认值。使用maven-archetype-quickstart生成的项目十分简单,基本内容如下:
·一个包含JUnit依赖声明的pom.xml。
·src/main/java主代码目录及该目录下一个名为App的输出“Hello World!”的类。
·src/test/java测试代码目录及该目录下一个名为AppTest的JUnit测试用例。
当需要创建一个全新的Maven项目时,就可以使用该Archetype生成项目后进行修改,省去了手工创建POM及目录结构的麻烦。
2.maven-archetype-webapp
这是一个最简单的Maven war项目模板,当需要快速创建一个Web应用的时候就可以使用它。使用maven-archetype-webapp生成的项目内容如下:
·一个packaging为war且带有JUnit依赖声明的pom.xml。
·src/main/webapp/目录。
·src/main/webapp/index.jsp文件,一个简单的Hello World页面。
·src/main/webapp/WEB-INF/web.xml文件,一个基本为空的Web应用配置文件。
3.AppFuse Archetype
AppFuse是一个集成了很多开源工具的项目,它由Matt Raible开发,旨在帮助Java编程人员快速高效地创建项目。AppFuse本身使用Maven构建,它的核心其实就是一个项目的骨架,是包含了持久层、业务层及展现层的一个基本结构。在AppFuse 2.x中,已经集成了大量流行的开源工具,如Spring、Struts 2、JPA、JSF、Tapestry等。
AppFuse为用户提供了大量Archetype,以方便用户快速创建各种类型的项目,它们都使用同样的groupId org.appfuse。针对各种展现层框架分别为:
·appfuse-*-jsf:基于JSF展现层框架的Archetype。
·appfuse-*-spring:基于Spring MVC展现层框架的Archetype。
·appfuse-*-struts:基于Struts 2展现层框架的Archetype。
·appfuse-*-tapestry:基于Tapestry展现层框架的Archetype。
每一种展现层框架都有3个Archetype,分别为light、basic和modular。其中,light类型的Archetype只包含最简单的骨架;basic类型的Archetype则包含了一些用户管理及安全方面的特性;modular类型的Archetype会生成多模块的项目,其中的core模块包含了持久层及业务层的代码,而Web模块则是展现层的代码。
更多关于AppFuse Archetype的信息,读者可以访问其官方的快速入门手册:http://appfuse.org/display/apf/appfuse+quickstart。