# CloudArchetype
**Repository Path**: CloudALM/CloudArchetype
## Basic Information
- **Project Name**: CloudArchetype
- **Description**: springboot Maven 骨架
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2017-10-06
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#CloudArchetype
由于我们的项目周期比较短,所以要频繁创建项目,而且项目的架构几乎一样,每次重复相同的过程肯定很不爽,有了maven(来自百度的解释:Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.),那一切变了简单了,最近用了下,感觉真的挺不错的,现在和大家分享下怎么创建属于自己的项目骨架,也就是项目模板。
创建属于自己的项目骨架主要用了maven archetype这个插件。
## 第一步:创建一个项目的原型

## 第二步: mvn archetype:create-from-project
添加插件依赖
```
org.apache.maven.plugins
maven-archetype-plugin
3.0.1
```
在项目根目录执行命令:mvn archetype:create-from-project

新生成的archetype在target/generated-sources/archetype目录

### 注意 maven创建自定义模板时需要注意的问题
- 1、问题 在eclipse 中执行 archetype:create-from-project命令时候总是报错:
[ERROR] Failed to execute goalorg.apache.maven.plugins:maven-archetype-plugin:2.4:create-from-project(default-cli)
on project webproject: ${maven.home} is not specified as adirectory: 'D:\GIT\1006\CloudArchetype\EMBEDDED'.
- 2、解决
在eclipse中配置自己系统里安装的maven

在执行 archetype:create-from-project的配置界面上,选中自己安装的maven,而不要用eclipse内嵌的。

## 第三步:
确认archetype/src/main/resources/META-INF/maven/archetype-metadata.xml包含了所有的资源
将资源中需要订制的地方替换成相应的`${groupid},${artifactid},${package}`,这样maven会在创建项目的过程中自动将这些值传入的相应要替换的地方
比如:
```
spring:
application:
name: ${artifactId}
devtools:
restart:
enabled: false #是否开启开发者工具(true/false)
additional-paths: src/main/java
exclude: static/**,WEB-INF/view/**
aop:
proxy-target-class: true #false为启用jdk默认动态代理,true为cglib动态代理
```
修改archetype-metadata.xml,在fileSets同级下增加requiredProperties标签。requiredProperties定义模板项目中一些参数值,内置的参数包括:`groupId,artifactId,version,package`。自己可以提供这些参数的默认值,也可以增加自己额外的参数。大部分情况下,内置的参数足够用。fileSet标签有一个`filtered="true"`属性,表示该fileSet可以使用参数变量。在文件中引用参数变量的方式${参数名},例如${package}.通常生成项目,archetype插件会扫描所有的文件,把需要替换为参数的地方自动替换。毕竟代码没有那么智能,有些地方会有问题。所以,我们要检查每个文件的参数部分是不是我们预期的。增加参数、删除参数来达到我们的要求。

那创建项目的时候回自动替换里面的变量,如果创建的文件名里面有变量,那使用`__artifactId__`这个格式。
```
com.***.***.archetype
***-archetype
*.*
```
这样可以发布到自己想要的位置,如果不修改那就放入默认的位置。
## 第五步:部署我们的模板项目到本地仓库测试
在archetype根(..\target\generated-sources\archetype)目录执行:mvn clean install,将该archetype传到本地的maven仓库
大功告成!
## 第六步:部署到公司内部的maven中央仓库
- 在archetype根POM.xml添加依赖
```
org.apache.maven.plugins
maven-source-plugin
true
attach-sources
jar-no-fork
compile
jar
user-release
User Porject Release
http://127.0.0.1:8081/repository/releases/
user-snapshot
User Porject Snapshot
http://127.0.0.1:8081/repository/snapshots/
```
- settings.xml配置私服账户

- 执行部署 deploy

## 第七步:通过自定义archetype创建项目骨架


当然是用命令也能创建,通过下面命令:
mvn archetype:generate -DarchetypeGroupId=xxx.archetype -DarchetypeArtifactId=xxx-archetype -DarchetypeVersion=xx就可以创建项目了。