2019-01-07 · Develop

自定义 Maven Archetype 模板

什么是 Archetype

简单的说,Archetype 是 Maven 工程的模板工具包。一个 Archetype 定义了要做的相同类型事情的初始样式或模型。这个名称给我们提供来了一个一致的生成 Maven 工程的方式。 Archetype 会帮助作者给用户创建 Maven 工程模板,并给用户提供生成相关工程模板版本的参数化方法。
Archetype 是在 maven-archetype-plugin 插件执行 generate 目标的时候进行配置的,我们经常使用到 maven 的内嵌的骨架包括: maven-archetype-webapp 、 maven-archetype-quickstart 。前者用来快速搭建一个 web 工程项目,后者用来快速搭建一个普通的 java 工程项目。

使用现有项目创建 Archetype 模板

Step 1 从现有项目中创建 Archetype 项目

在自己项目的根目录下执行如下命令创建 Archetype 项目

mvn archetype:create-from-project

此时会在项目的 target 目录下生成如下文件

create-archetype-from-project

这步主要是将现有项目中的文件替换成相应的变量,如下文件中将包名使用 ${package} 变量进行替换。

#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
package ${package};

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Step 2 生成 Archetype 模板

进入到 target 目录将刚刚生成的 Archetype 项目中,将其安装到本地仓库

cd target/generated-sources/archetype/

mvn install

Step 3 生成 archetype-catalog.xml 骨架配置文件

mvn archetype:crawl

其生成的内容大致如下

<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalog xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd"
    xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <archetypes>
    <archetype>
      <groupId>com.zuojl</groupId>
      <artifactId>lo-archetype</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <description>lo</description>
    </archetype>
  </archetypes>
</archetype-catalog>

使用生成的模板

使用自定义的模板和我们平时使用 Archetype 模板没有什么区别,只需要指定使用本地的模板骨架就行。

mvn archetype:generate -DarchetypeCatalog=local

然后根据提示进行创建就行,当然也可以和编辑器进行集成,比如使用 IDEA

idea-archetype-define

如上图所示的,先点击 Add Archetype 填写刚刚在 archetype-catalog.xml 文件中生成的信息,就可以在列表中找到刚刚添加的模板了。


参考文档
Maven的这三个用法你一定要会!