Maven使用archetype生成项目
Archtype
指项目的骨架, Maven
中的 maven-archetype-plugin
插件使用户可以方便的生成所需的项目骨架.
###1.命令行调用maven插件
mvn archetype:generate
如果不加任何参数,命令窗口显示的会有上千中项目骨架可够选择,我们可以使用 -DarchetypeCatalog
, -Dfilter
选择过滤项目骨架,参数赋值的格式跟JAVA设置系统属性一样 -D<name>=<value>
##### -DarchetypeCatalog
参数:
archetypeCatalog参数指定使用的catalog.xml文件,默认值是
remote
,local
,上述命令等同于mvn archetype:generate -DarchetypeCatalog=remote,local
- internal:使用插件内部的文件.
- local :使用本地的文件,默认路径是
.m2/archetype-catalog.xml
.- remote :使用远程的文件,默认路径是
http://repo1.maven.org/maven2/archetype-catalog.xml
.- file://path/to/archetype-catalog.xml :使用本地指定路径的文件.
- http://url/to/archetype-catalog.xml :使用远程路径的文件.
##### -Dfilter
参数:
filter过滤选择对应的骨架,格式:
[groupId:]artifactId
,其中groupId是可选,e.g-Dfilter=mvc
表示过滤artifactId
包含mvc
关键字的项目骨架,如果有groupId,-Dfilter=org.apache:struts
通过过滤选择,可以生成一个我们需要的项目骨架,这里可以直接从命令行过滤关键字或者直接打开上述 remote
的 url
中的 archetype-catalog.xml文件中查找。最近刚好在看 webx
框架,而且该框架也有 archetype-webx-quickstart
,那么可以从命令行生成该项目的一个例子:
root@ubuntu:~/gitspace/maven-demo$ mvn archetype:generate -Dfilter=webx
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:2.3:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:2.3:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO]
[INFO] --- maven-archetype-plugin:2.3:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: remote -> com.alibaba.citrus.sample:archetype-webx-quickstart (-)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 1
Choose com.alibaba.citrus.sample:archetype-webx-quickstart version:
1: 1.0
2: 1.1
3: 1.2
4: 1.3
5: 1.4
6: 1.5
7: 1.6
8: 1.7
9: 1.8
Choose a number: 9: 9
###2.配置 maven
项目信息
选择好项目骨架后,命令行会提示让我们一步步输入 maven
项目信息
Define value for property 'groupId': : info.chenrongrong
Define value for property 'artifactId': : dailyjava
Define value for property 'version': 1.0-SNAPSHOT: : \\按回车默认是1.0-SNAPSHOT
Define value for property 'package': info.chenrongrong: : \\按回车默认
[INFO] Using property: spring-version = 3.2.7.RELEASE
[INFO] Using property: webx-version = 3.2.4
Confirm properties configuration:
groupId: info.chenrongrong
artifactId: dailyjava
version: 1.0-SNAPSHOT
package: info.chenrongrong
spring-version: 3.2.7.RELEASE
webx-version: 3.2.4
Y: : \\按回车确认
###3.生成 maven
项目
项目参数配置好后,便可以生成 webx
的项目骨架,用 tree
命令可以查看生成的项目的目录结构:
dailyjava/
├── pom.xml
└── src
└── main
├── java
│ └── info
│ └── chenrongrong
│ └── app1
│ ├── module
│ │ ├── action
│ │ │ └── RegisterAction.java
│ │ └── screen
│ │ ├── form
│ │ │ └── Welcome.java
│ │ ├── list
│ │ │ └── Default.java
│ │ ├── multievent
│ │ │ ├── SayHello1.java
│ │ │ └── SayHello2.java
│ │ └── simple
│ │ ├── Count.java
│ │ ├── Download.java
│ │ ├── SayHiImage.java
│ │ └── SayHi.java
│ └── Visitor.java
└── webapp
├── app1
│ └── templates
│ ├── layout
│ │ └── default.vm
│ └── screen
│ ├── form
│ │ ├── register.vm
│ │ └── welcome.vm
│ ├── index.vm
│ └── list
│ ├── asHtml.vm
│ ├── asJson.vm
│ └── asXml.vm
├── common
│ └── templates
│ ├── layout
│ │ └── default.vm
│ ├── macros.vm
│ └── screen
│ └── error.vm
└── WEB-INF
├── app1
│ └── form.xml
├── common
│ ├── pipeline-exception.xml
│ ├── pipeline.xml
│ ├── resources.xml
│ ├── uris.xml
│ ├── webx-component-and-root.xml
│ └── webx-component.xml
├── logback.xml
├── webx-app1.xml
├── web.xml
└── webx.xml
Maven
的 Archetype Plugin
除了提供上述使用 archetype-catalog.xml
文件生成项目外,还有其他方式生成项目骨架: