什么是 maven archetype
Maven Archetype是一个Maven项目模板创建工具。它的主要作用是:
- 让开发者可以通过一个交互式程序或者一个配置文件快速的生成一个Maven项目结构。
- Maven Archetype定义了一个项目的基本结构,包括:
- pom.xml:Maven项目的核心配置文件
- 资源文件目录:src/main/resources
- java源代码目录:src/main/java
- 测试资源文件目录:src/test/resources
- 测试java源代码目录:src/test/java
- 当使用某个Maven Archetype时,它会提问开发者一些与项目相关的信息,如:
- groupId:项目/组织唯一标识符
- artifactId:项目的唯一名称
- version:项目的版本号
- package:项目的层次结构
- 然后Maven Archetype会使用这些信息在本地文件系统上创建一个项目结构,并填写相关的配置文件(如pom.xml)
- 开发者不再需要手工创建文件夹和文件,或者编写模板pom.xml配置等,只需要输入必要信息,就可以快速创建一个Maven项目结构,开始开发和构建。
一个 Java maven archetype 模板创建步骤
增加 java 项目 pom 插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>3.1.2</version>
</plugin>
</plugins>
</build>
生成 maven archetype 模板文件夹
mvn archetype:create-from-project

自定义你的 maven archetype 模板文件
自定义你的模板替换和生成规则
vi target/generated-sources/archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
<archetype-descriptor>
<fileSets>
<fileSet filtered="true" packaged="true" encoding="UTF-8">
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
<excludes>
<exclude>com/zarek/dockerjava/DockerjavaApplication.java</exclude>
</excludes>
</fileSet>
</fileSets>
<requiredProperties>
<requiredProperty key="MODULE_NAME">
<defaultValue>zarek-webdemo</defaultValue>
</requiredProperty>
</requiredProperties>
</archetype-descriptor>
| 属性 | 作用 |
|---|
| filtered | 是否启用 archetype.properties 过滤替换 includes 包含 requiredProperties 的所有属性的值 |
| packaged | 是否将生成的包路径加上package路径 |
| requiredProperty | 创建maven模板文件所必须的属性,这个属性可以被替换到指定的文件中 |
自定义你的模板替换的文件里的值
vi target/generated-sources/archetype/src/test/resources/projects/basic/archetype.properties
package=it.pkg
version=0.1-SNAPSHOT
groupId=archetype.it
artifactId=basic
MODULE_NAME=smc-default
安装 maven archetype 模板文件
cd target/generated-sources/archetype/
mvn clean install
使用 maven 模板创建项目
# 非交互方式
mvn archetype:generate -DMODULE_NAME=zarek-demo -DgroupId=com.zarek.demo -DartifactId=demo-project -Dversion=1.0.0 -Dpackage=com.zarek.demo -DarchetypeGroupId=com.zarek -DarchetypeArtifactId=dockerjava-archetype -DarchetypeVersion=0.0.1-SNAPSHOT -DinteractiveMode=false
# 交互方式
mvn archetype:generate -DMODULE_NAME=zarek-demo
发布 maven 模板到远程仓库
mvn deploy
参考文章
架构师必备技能:Maven Archetype生成项目模板 - 腾讯云开发者社区-腾讯云 (tencent.com)