Maven 项目模板创建指南

本文通过 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, artifactIdversion。这三个参数将在稍后使用(在命令行通过 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

    原文作者:翼徳
    原文地址: https://www.jianshu.com/p/710ee1165e15
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞