本文通过 Maven archetype 来创建自定义的项目结构,形成Maven 项目模板,避免重复的项目创建工作。
Archetypes 创建指南
创建一个 archetype 是一个非常简单的过程。 archetype 是一个简化版的 artifact,其中包含了你想要创建的项目的原型。 archetype 由以下部分组成:
- archetype 描述器 (archetype.xml 路径 src/main/resources/META-INF/maven/)。它分类列举了要包含在 archetype 中的全部文件,确保archetype 生成机制正常运行。
- 通过 archetype 插件要复制的原型文件(src/main/resources/archetype-resources/)
- 原型 pom (pom.xml 路径 src/main/resources/archetype-resources)
- Archetype 的 pom 文件(pom.xml 在 archetype 的根目录)。
创建 archetype 要遵循下面的这些步骤:
1. 为 archetype artifact 创建一个新项目和 pom.xml
下面是一个 archetype artifact 的 pom.xml 示例:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.groupId</groupId>
<artifactId>my-archetype-id</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
</project>
你需要写的信息是 groupId, artifactId 和 version。这三个参数将在稍后使用(在命令行通过 archetype:generate 调用 archetype 时使用)。
2. 创建 archetype 描述器
archetype 描述器 是一个叫 archetype.xml 的文件,必须在 src/main/resources/META-INF/maven/ 目录下。 下面是 archetype 描述器的示例:
<archetype xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0 http://maven.apache.org/xsd/archetype-1.0.0.xsd">
<id>quickstart</id>
<sources>
<source>src/main/java/App.java</source>
</sources>
<testSources>
<source>src/test/java/AppTest.java</source>
</testSources>
</archetype>
标签 <id> 必须和 archetype 的 pom.xml 中的 artifactId 一样。
<allowPartial>true</allowPartial> 表示:可以在已存在的项目上运行 archetype:generate 命令。
<sources>, <resources>, <testSources>, <testResources> 和<siteResources> 标签代表项目的不同部分:
- <sources> = src/main/java
- <resources> = src/main/resources
- <testSources> = src/test/java
- <testResources> = src/test/resources
- <siteResources> = src/site
<sources> 和<testSources> 可以包含 <source> 元素来指定一个源文件。
<testResources> 和<siteResources> 包含 <resource>元素来指定一个资源文件。
其他资源与 src/main/webapp 目录配置在 <resources> 标签中一样处理 。
这里只能指定单个要创建的文件,不能是空目录。
下面的目录结构展示了上面的定义:
archetype
|-- pom.xml
`-- src
`-- main
`-- resources
|-- META-INF
| `-- maven
| `--archetype.xml
`-- archetype-resources
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- App.java
`-- test
`-- java
`-- AppTest.java
3. 创建原型文件和原型 pom.xml
另一个 archetype 的组件是原型 pom.xml。随便一个 pom.xml 都行,只要别忘了设置 artifactId 和 groupId 做变量 (${artifactId} 和 ${groupId})就行。两个变量在命令行调用 archetype:generate 时将被初始化。
原型 pom.xml 的例子:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<packaging>jar</packaging>
<name>A custom project</name>
<url>http://www.myorganization.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
4. 安装并运行 archetype 插件
现在你可以安装 archetype:
mvn install
现在,你已经创建好了 archetype,你可以在你本地环境用下面的命令试试。这个命令中,你需要指定你要使用的 archetype 的全部信息(包括 groupId,artifactId,version)和你要新建项目的信息(artifactId,groupId)。别忘了包含你的 archetype 的版本(如果你没有包含版本,你的 archetype 可能会创建失败并显示一条消息:version:RELEASE 未发现)。
mvn archetype:generate \
-DarchetypeGroupId=<archetype-groupId> \
-DarchetypeArtifactId=<archetype-artifactId> \
-DarchetypeVersion=<archetype-version> \
-DgroupId=<my.groupid> \
-DartifactId=<my-artifactId>
如若好运执行到此,你就可以发布你的 archetype 到 Maven 上,以便更多的人可以使用这个 archetype。
其他创建 Archetype 的方法
用以下方式可以替代手工创建 archetype 的目录结构:
mvn archetype:generate
-DgroupId=[your project's group id]
-DartifactId=[your project's artifact id]
-DarchetypeArtifactId=maven-archetype-archetype
之后,你可以自定义 archetype-resources 目录和 archetype.xml 的内容,然后执行第四步(安装 archetype 并运行 archetype 插件)
官网原文地址:https://maven.apache.org/guides/mini/guide-creating-archetypes.html