3.5 使用Archetype生成项目骨架
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:mavenarchetype
plugin:2.0alpha5:generate
很多资料会让你直接使用更为简单的 mvn archetype:generate 命令,但在Maven 2中这是不安全的,因为该命令没有指定Archetype插件的版本,于是Maven会自动去下载最新的版本,进而可能得到不稳定的SNAPSHOT版本,导致运行失败。然而在Maven 3中,即使用户没有指定版本,Maven也只会解析最新的稳定版本,因此这是安全的。具体内容见7.7节。
我们实际上是在运行插件mavenarchetypeplugin,注意冒号的分隔,其格式为 groupId:artifactId:version:goal,org.apache.maven.plugins 是maven官方插件的groupId,mavenarchetypeplugin 是Archetype插件的artifactId,2.0alpha5 是目前该插件最新的稳定版,generate是要使用的插件目标。
紧接着会看到一段长长的输出,有很多可用的Archetype供选择,包括著名的Appfuse项目的Archetype、JPA项目的Archetype等。每一个Archetype前面都会对应有一个编号,同时命令行会提示一个默认的编号,其对应的Archetype为mavenarchetypequickstart,直接回车以选择该Archetype,紧接着Maven会提示输入要创建项目的groupId、artifactId、version以及包名package。如下输入并确认:
- Define value for groupId: : com.juvenxu.mvnbook
- Define value for artifactId: : helloworld
- Define value for version: 1.0SNAPSHOT: :
- Define value for package: com.juvenxu.mvnbook: :
com.juvenxu.mvnbook.helloworld - Confirm properties configuration:
- groupId: com.juvenxu.mvnbook
- artifactId: helloworld
- version: 1.0SNAPSHOT
- package: com.juvenxu.mvnbook.helloworld
- Y: : YArchetype
插件将根据我们提供的信息创建项目骨架。在当前目录下,Archetype插件会创建一个名为helloworld(我们定义的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。
Maven2创建Java项目
1、打开命令行窗口,显示在保存项目的位置;
2、创建JAVA项目
命令:mvn archetype:generate
* 输入需要创建的项目,这里创建普通java项目,按照选择输入15,默认就可以了;
* Define value for groupId :输入组织ID;
* Define value for groupId :输入项目名称;
* Define value for version :输入版本号,可以直接回车,默认是1.0-SNAPSHOT;
* Define value for package :java的包名,如com.shichao;
完成以上输入后,命令行显示以上信息,输入y 即完成创建.
3、将maven项目转化为eclipse项目
mvn eclipse:eclipse
maven将生成eclipse需要的配置文件,形成eclipse项目(如.project文件);
打开eclipse,菜单选择:file>import>general>existing projects into workspace,在对话框中选中目录,导入即可;
4、清除eclipse项目相关配置
mvn eclipse:clean
maven将清除项目中eclipse配置文件
Maven2创建WEB项目
在maven的工作空间(这里的工作空间即将要存放所创建的Web项目文件夹的文件夹。如E:\maven)中执行如下的命令:
mvn archetype:create -DgroupId=com.javaeye.webfoo -DartifactId=webfoo -DarchetypeArtifactId=maven-archetype-webapp
再将项目导入eclipse即可!