Maven-使用Archetype生成项目骨架

Maven项目中有一些默认的约定:在项目的根目录中放置pom.xml,在src/main/java目录中放置项目的主代码,在src/test/java中放置项目的测试代码。我们称这些基本的目录结构和pom.xml文件内容为项目的骨架,maven提供了Archetype以帮助我们快速勾勒出项目骨架。

我们使用maven archetype来创建往期文章中使用的Hello World项目的骨架

如果是Maven 3,简单的运行:

mvn archetype:generate

如果是Maven 2,最好运行如下命令:

mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-5:generate

之所以在Maven 2中不能简单的使用mvn archetype:generate命令,是因为这样是不安全的,因为该命令没有指定Archetype插件的版本,于是Maven会自动去下载最新的版本,进而可能得到不稳定的SNAPSHOT版本,导致运行失败。然而在Maven 3中,即使用户没有指定版本,Maven也只会解析最新的稳定版本,因此这是安全的。

mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-5:generate命令,我们实际上是在运行插件maven-archetype-plugin,注意冒号的分隔,其格式为groupId:artifactId:version:goal,org.apache.maven.plugins是maven官方插件的groupId,maven-archetype-plugin是Archetype插件的artifactId,2.0-alpha-5是该插件的稳定版本,generate是要使用的插件目标。

紧接着会看到一段长长的输出,有很多可用的Archetype供选择,包括著名的Appfuse项目的Archetype,JPA项目的Archetype等。

每一个Archetype前面都会对应一个编号,同时命令行会提示一个默认编号,其对应的Archetype为maven-archetype-quichstart,直接回车以选择该Archetype,接着会提示输入要使用maven-archetype-quickstart的版本号,直接回车默认使用最新版本。紧接着Maven会提示输入要创建项目的groupId,artifactId,version,以及包名package

Archetype会根据我们提供的信息创建项目骨架。在当前目录下,Archetype插件会创建一个名为hello-world的子目录(我们定义的artifactId)从中可以看到项目的基本结构:基本的pom.xml已被创建,里面包含了必要的信息以及一个junit依赖;主代码目录src/main/java已经被创建,在该目录下还有一个Java类com.juvenxu.mvnbook.helloworld.App,注意这里使用了刚才定义的包名,而这个类也仅仅只有一个简单的输出Hello World!的main方法;测试代码目录src/test/java也被创建好了,并且包含了一个测试用例com.juvenxu.mvnbook.helloworld.AppTest。

Archetype可以帮助我们迅速的构建起项目的骨架,在前面的例子中,我们完全可以在Archetype生成的骨架的基础上开发Hello World项目,可以节省大量的时间。

这里仅仅看到了一个最简单的Archetype,如果有很多项目拥有类似的自定义项目以及配置文件,完全可以一劳永逸的开发自己的Archetype,然后在这些项目中使用自定义的Archetype来快速生成项目骨架。

猜你喜欢

转载自blog.csdn.net/tjsahwj/article/details/84301799