天天看点

Maven实战. 3.5使用Archetype生成项目骨架

<b>3.5使用archetype生成项目骨架</b>

hello world项目中有一些maven的约定:在项目的根目录中放置pom.xml,在src/main/java目录中放置项目的主代码,在src/test/java中放置项目的测试代码。之所以一步一步地展示这些步骤,是为了能让可能是maven初学者的你得到最实际的感受。我们称这些基本的目录结构和pom.xml文件内容称为项目的骨架,当第一次创建项目骨架的时候,你还会饶有兴趣地去体会这些默认约定背后的思想,第二次,第三次,你也许还会满意自己的熟练程度,但第四、第五次做同样的事情,你可能就会恼火了。为此maven提供了archetype以帮助我们快速勾勒出项目骨架。

还是以hello world为例,我们使用maven archetype来创建该项目的骨架,离开当前的maven项目目录。

如果是maven 3,简单地运行:mvn archetype:generate如果是maven 2,最好运行如下命令:mvn org.apache.maven.plugins:mavenarchetypeplugin:2.0alpha5:generate很多资料会让你直接使用更为简单的 mvn archetype:generate 命令,但在maven 2中这是不安全的,因为该命令没有指定archetype插件的版本,于是maven会自动去下载最新的版本,进而可能得到不稳定的snapshot版本,导致运行失败。然而在maven 3中,即使用户没有指定版本,maven也只会解析最新的稳定版本,因此这是安全的。具体内容见7.7节。

我们实际上是在运行插件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quickstart,直接回车以选择该archetype,紧接着maven会提示输入要创建项目的groupid、artifactid、version以及包名package。如下输入并确认:define value for groupid: :

com.juvenxu.mvnbook

define value for artifactid: : helloworld

define value for version:  1.0snapshot: :

define value for package:  com.juvenxu.mvnbook: : com.juvenxu.mvnbook.helloworld

confirm properties configuration:

groupid: com.juvenxu.mvnbook

artifactid: helloworld

version: 1.0snapshot

package: com.juvenxu.mvnbook.helloworld

y: : yarchetype插件将根据我们提供的信息创建项目骨架。在当前目录下,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来快速生成项目骨架。本书后面的章节会详细阐述如何开发maven archetype。