# maven-archetype-springboot-profiles
**Repository Path**: pheker/maven-archetype-springboot-profiles
## Basic Information
- **Project Name**: maven-archetype-springboot-profiles
- **Description**: SpringBoot项目多环境通用模板archetype
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 0
- **Created**: 2019-04-01
- **Last Updated**: 2023-05-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# maven-archetype-springboot-profiles
## 一、自定义archetype
#### 介绍
SpringBoot项目多环境通用模板archetype
1.基于SpringBoot
2.多环境,dev-test-pre-pro
3.是一个通用的模板项目,通用是指项目的结构通用
4.用于生成自定义archetype
#### 项目结构
```
src
├─main
│ ├─filters
│ │ dev.properties
│ │ pre.properties
│ │ pro.properties
│ │ test.properties
│ │
│ ├─java
│ │ └─cn
│ │ └─pheker
│ │ │ ApplicationStarter.java
│ │ │
│ │ ├─common
│ │ │ IpUtils.java
│ │ │
│ │ └─modules
│ └─resources
│ │ application.properties
│ │ spring.xml
│ │
│ ├─doc
│ │ maven-archetype.txt
│ │
│ └─webapp
└─test
├─java
│ └─cn
│ └─pheker
│ ApplicationStarterTest.java
│
└─resources
```
#### 反向生成模板-步骤
在根目录maven-archetype-springboot-profiles下执行mvn archetype:create-from-project进行反向生成原型,如果成功则会提示:
```
Archetype project created in F:\workspace\learn-mvn\maven-archetype-springboot-profiles\target\generated-sources\archetype
```
这个名称为archetype的项目就是我们的原型项目,我们可以在此项目下mvn clean install将此项目安装到本地仓库(此时就可以在项目中使用了,创建项目,add archetype, 填写相关信息,使用新添加的archetype生成项目),但会发现生成的项目结构与我们预期的不是很一样:1.没有空文件夹。所以我们可以如下操作:
1.pom.xml的buid中加入
```xml
org.apache.maven.plugins
maven-resources-plugin
2.3
true
```
2.修改archetype-metadata.xml
```xml
src/main/java
**/*.**
src/main/resources
**/*.**
src/main/filters
**/*.**
src/test/java
**/*.**
src/test/resources
**/*.**
src/main/webapp
**/*.**
```
再执行mvn clean install (至于部署,可自行百度)
## 模板现在已经在仓库中了,那如何通过此模板创建项目呢?
两种方法:
* (idea)创建项目,add archetype, 填写相关信息,使用新添加的archetype生成项目
* 之前安装到仓库(mvn clean install)一般会在仓库下生成了archetype-catalog.xml(如果没有则可手动生成mvn archetype:crawl)
1.eclipse可添加此文件、生成项目时使用此项目生成即可
2.也可以使用命令行生成项目:
```cmd
mvn archetype:generate -DarchetypeCatalog=local
```
上面使用交互模式生成项目,如不使用交互模式的话:
```cmd
mvn archetype:generate -DgroupId=com.alibaba -DartifactId=jackma2 -Dversion=1.0 -DarchetypeGroupId=cn.pheker -DarchetypeArtifactId=maven-archetype-springboot-profiles-archetype -DarchetypeVersion=1.0-SNAPSHOT -DinteractiveMode=false -DarchetypeCatalog=local
```
## 二、maven创建项目-说明
#### 参数说明
-DgroupId= 组织或公司名称如:com.google
-DartifactId= 项目名称
-Dpackage= 包名,如:com.google,默认为配置的groupId
-Dversion= 版本,如1.0-SNAPSHOT此为默认
-DarchetypeGroupId= 要使用的模板的组织名称
-DarchetypeArtifactId= 要使用的模板的项目名称
-Dversion= 要使用的模板的版本
-DinteractiveMode=false 不使用交互模式
-DarchetypeCatalog=internal 使用内部的(remote、internal、local)原型目录而不使用maven中心的(默认remote原型过多可能导致卡死)
#### 使用quickstart模板创建java项目
mvn archetype:generate -DgroupId=cn.pheker -DartifactId=learn-maven-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DarchetypeCatalog=internal
```
目录结构:
|-src
|---main
|-----java
|-------cn
|---------pheker
|-----------App.java
|---test
|-----java
|-------cn
|---------pheker
|-----------AppTest.java
|-pom.xml
```
POM默认信息:
```
4.0.0
cn.pheker
learn-maven-quickstart2
jar
1.0.0-dev
learn-maven-quickstart2
http://maven.apache.org
junit
junit
3.8.1
test
```
#### 使用webapp模板创建web项目
mvn archetype:generate -DgroupId=cn.pheker -DartifactId=learn-maven-webapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DarchetypeCatalog=internal
```
|----pom.xml
|----src
|----main
|------resources
|------webapp
|--------index.jsp
|--------WEB-INF
|----------web.xml
```
可以看到相比于quickstart模板创建的项目,多了resources与webapp目录,少了java目录与测试目录
所以自己要手动增删目录或文件即可,如果我们想用一套自定义的通用模板,可以自定义archetype
#### 自定义archetype
方式有两种:
1.按archetype规范手动创建原型项目并配置;
2.利用现有项目反向生成原型项目,并可以修改配置进行定制化
#### 如何删除IDEA中自己添加的archetype
${user.home}\.IntelliJIdea2018.3\system\Maven\Indices\UserArchetypes.xml