Maven Archetype(原型/模板)

1年前 (2024-04-27)
Archetype 是 Maven 项目的模板工具包,它定义了 Maven 项目的基本架构。Archetype 为开发人员提供了数千种创建 Maven 项目的模板,Maven 通过这些模板可以帮助用户快速的生成项目的目录结构以及 POM 文件。

Maven Archetype 由下面 5 个模块组成:

  • maven-archetype-plugin:Archetype 插件。

  • archetype-packaging:用于描述 Archetype 的生周期与构建项目软件包。

  • archetype-models:用于描述类与引用。

  • archetype-common:核心类。

  • archetype-testing:用于测试 Maven Archetype 的内部组件。

maven-archetype-plugin

我们知道 Maven 的所有功能都是通过插件实现的,Archetype 也不例外,它是由一个名为 maven-archetype-plugin 的插件实现的,该插件提供了 ArcheType 的所有功能。

虽然 ArcheType 只是一个插件,但其应用范围十分的广泛,几乎所有的主流 IDE(例如 Eclipse、NetBeans 和 IntelliJ IDEA)都在集成 Maven 时着重继承了 Archetype 特性,以方便用户快速的创建 Maven 项目。

执行以下令可以帮助用户快速的创建 Maven 项目.

mvn archetype:generate


为了满足用户的需求,Maven 为用户提供了大量不同类型的 Archetype 模板(到本教程编写时共提供了 2916 个 Archetype 模板)。

在执行以上令时,Maven 会输出一个 ArcheType 列表,每个ArcheType 前面都对应一个编号,我们可以根据不同的需求选择适的 Archetype。

 

Maven 模板选择

图1:Maven Archetype 模板列表


说到底,Archetype 只是一个模板,为了保持模板的通用性,它的很多重要的信息都是可配置的,在用户选择了 Archetype 后,还需要提供一些关于项目的基本参数,主要包括以下参数:

  • groupId

  • artifactId

  • version

  • package


在输入以上参数后,Archetype 插件就能够为用户生成项目的基本目录结构和 POM 文件了。

示例 1

1. 打开令控制台,跳转到 D:\maven 目录中,执行以下 Maven 令。

mvn archetype:generate


Maven 将开始处理,并要求选择所需的项目模板。

[INFO] Scanning for projects...

[INFO]

[INFO] ------------------< org.apache.maven:standalone-pom >-------------------

[INFO] Building Maven Stub Project (No POM) 1

[INFO] --------------------------------[ pom ]---------------------------------

[INFO]

[INFO] >>> maven-archetype-plugin:3.2.0:generate (default-cli) > generate-sources @ standalone-pom >>>

[INFO]

[INFO] <<< maven-archetype-plugin:3.2.0:generate (default-cli) < generate-sources @ standalone-pom <<<

[INFO]

[INFO]

[INFO] --- maven-archetype-plugin:3.2.0:generate (default-cli) @ standalone-pom ---

[INFO] Generating project in Interactive mode

……

2860: remote -> tk.skuro:clojure-maven-archetype (A simple Maven archetype for Clojure)

2861: remote -> top.lshaci:framework-archetype (top lshaci framework maven archetype)

2862: remote -> top.marchand.archetype:sie-xf-prio-dep-import-generic ([ELS] Modèle de projet d'import Flash basé sur l'importeur générique)

2863: remote -> top.ssrsdev:eightroes-plugin-archetype (eightroes-webapp-archetype)

2864: remote -> top.ssrsdev:eightroes-webapp-archetype (eightroes-webapp-archetype)

2865: remote -> t网站站点" rel="nofollow" />

Choose org.apache.maven.archetypes:maven-archetype-quickstart version:

1: 1.0-alpha-1

2: 1.0-alpha-2

3: 1.0-alpha-3

4: 1.0-alpha-4

5: 1.0

6: 1.1

7: 1.3

8: 1.4

Choose a number: 8:


直接回车,选择默认选项(8:maven-archetype-quickstart:1.4)。

Maven 要求提供项目的详细信息,根据要求输入项目的详细信息,若使用默认值,则直接回车即可。

Define value for property 'groupId': net.biancheng.www

Define value for property 'artifactId': thirdMaven

Define value for property 'version' 1.0-SNAPSHOT: :

Define value for property 'package' net.biancheng.www: :


Maven 要求用户确认信息,直接回车或输入字母 Y 再按下回车键确认信息。若信息有误,则需要先输入除字母 Y 之外得其他字母按钮,在回车即可重新输入。

Confirm properties configuration:

groupId: net.biancheng.www

artifactId: thirdMaven

version: 1.0-SNAPSHOT

package: net.biancheng.www

Y: :


以上信息确认完成过后,Maven 开始构建项目结构,并显示如下内容。

[INFO] ----------------------------------------------------------------------------

[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4

[INFO] ----------------------------------------------------------------------------

[INFO] Parameter: groupId, Value: net.biancheng.www

[INFO] Parameter: artifactId, Value: thirdMaven

[INFO] Parameter: version, Value: 1.0-SNAPSHOT

[INFO] Parameter: package, Value: net.biancheng.www

[INFO] Parameter: packageInPathFormat, Value: net/biancheng/www

[INFO] Parameter: package, Value: net.biancheng.www

[INFO] Parameter: version, Value: 1.0-SNAPSHOT

[INFO] Parameter: groupId, Value: net.biancheng.www

[INFO] Parameter: artifactId, Value: thirdMaven

[INFO] Project created from Archetype in dir: d:\maven\thirdMaven

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 02:39 min

[INFO] Finished at: 2021-03-03T16:18:11+08:00

[INFO] ------------------------------------------------------------------------

项目结构

进入 D:\maven 目录,我们可以看到 Maven 已经创建了一个名为 thirdMaven 项目,其目录结构如下图。


图1:目录结构


Maven 为项目生成了一个 POM 文件,如下所示。

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache网站站点" rel="nofollow" />

package net.biancheng.www;

/**

* Hello world!

*/

public class App {

public static void main(String[] args) {

System.out.println("Hello World!");

}

}


AppTest.java 代码如下。

package net.biancheng.www;

import static org.junit.Assert.assertTrue;

import org.junit.Test;

/**

* Unit test for simple App.

*/

public class AppTest {

/**

* Rigorous Test :-)

*/

@Test

public void shouldAnswerWithTrue() {

assertTrue(true);

}

}