# maven-archetype-template
**Repository Path**: tan1126/maven-archetype-template
## Basic Information
- **Project Name**: maven-archetype-template
- **Description**: archetype脚手架
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-08-30
- **Last Updated**: 2024-09-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# archetype
> 简而言之,Archetype是一个Maven项目模板工具包。原型被定义为*原始图案或模型,所有其他同类事物都是从中制造的*。这些名称很合适,因为我们试图提供一个系统,提供生成 Maven 项目的一致方法。Archetype将帮助作者为用户创建Maven项目模板,并为用户提供生成这些项目模板的参数化版本的方法。
>
> 使用原型提供了一种很好的方法,可以快速为开发人员提供支持,其方式与项目或组织采用的最佳实践一致。在 Maven 项目中,我们使用原型来尝试通过提供一个示例项目来尝试让我们的用户尽快启动和运行,该项目演示了 Maven 的许多功能,同时向新用户介绍了 Maven 采用的最佳实践。在几秒钟内,新用户可以拥有一个工作的Maven项目,用作调查Maven中更多功能的跳板。我们还尝试使原型机制具有附加性,我们的意思是允许在原型中捕获项目的某些部分,以便可以将项目的各个部分或方面添加到现有项目中。一个很好的例子是Maven网站原型。例如,如果您已使用快速入门原型生成工作项目,则可以使用该现有项目中的网站原型快速为该项目创建网站。你可以用原型做这样的事情。
>
> 您可能希望标准化组织内的 J2EE 开发,因此您可能希望为 EJB 或 WAR 或 Web 服务提供原型。在组织的存储库中创建并部署这些原型后,组织内的所有开发人员都可以使用它们。
>
> @see: [Maven Archetype – About (apache.org)](https://maven.apache.org/archetype/index.html)
## 背景
在进行平台应用开发时会经常的根据平台系统要求格式新建项目。目前没有统一的脚手架进行支撑导致开发人员在构建新的工程时非常的不方便,并且构建的工程结构还不一定符合平台规范要求。
## 目的
通过 maven archetype 组件帮助用户创建Maven项目模板,并为用户提供生成这些项目模板的参数化版本的方法
## 构建
如果在maven项目中使用 archetype 需要先引入maven 插件
```xml
org.apache.maven.plugins
maven-archetype-plugin
3.1.2
archetype.yaml
UTF-8
java,xml,yaml,yml,properties
```
然后在主 pom.xml 同级别的目录下允许maven命令:
```bash
mvn clean archetype:create-from-project
```
这个时候可能出现以下错误:
```bash
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:3.1.2:create-from-project (default-cli) on project ams: Invoker process ended with result different than 0! -> [Help 1]
```
该错误是由于maven没有找到 setting.xml文件导致的。需要将maven 的setting.xml 文件 copy 到 系统的用户目录下。具体路径为:
```bash
C:\Users\jack\.m2
```
重新运行 ```mvn clean archetype:create-from-project``` 指令就会生成成功。生成的target结构如下:

本质上来说到了这个步骤项目模板生成就完成了。这个时候需要将这个模板安装到本地的maven仓库中去。需要在:
```bash
.\target\generated-sources\archetype\
```
目录下运行maven 安装命令:
```bash
mvn clean install
```
安装完成后,该模板项目就在本地了,然后就可以在idea等开发工具中使用了。
## 自定义参数
在我们构建系统模板时,可能需要自定义一些参数,如 server.port 等。这个时候就需要定义archetype让它允许自定义变量。引入配置:
```xml
org.apache.maven.plugins
maven-archetype-plugin
3.1.2
archetype.yaml
UTF-8
java,xml,yaml,yml,properties
```
在主 pom.xml 相同的目录下新建 archetype.yaml 文件,内容如下:
```yaml
# 变量:默认值
server-port: 8080
application-name: temp
zh-application-name: zh-application
```
然后重新构建模板项目,在生成好系统模板后需要在模板合适的地方替换变量如:

然后安装模板到本地或者私有仓库中,就可以使用了。
## idea中使用

在添加 archetype 时需要填写模板的坐标,如下:
```xml
com.tanzl.project
template-archetype
1.0.0-SNAPSHOT
```
**ps: 新老版本idea的archetype 界面可能不一样但内容都是一样的 **