前言
还记得吗,我们在创建maven项目的时候,曾经使用过qucikstart,webapp等这些maven archetype。使用archetype可以快速创建出具有一定组织结构或者一定功能的项目。比如:qucikstart 可以src/main/java,src/main/resources等这些目录,webapp 可以快速创建出符合web应用目录规范的项目。
现在让我们想一下开发微服务项目的时候我们创建一个微服务一般是怎么做的?
- 第一种方式
1)创建一个普通maven工程
2)编写pom.xml导入springboot ,nacos,feign,sleuth,zipkin等依赖
3)创建编写application.yml或者bootstrap.yml配置文件
4)创建启动类
- 第二种方式
通过spring initializr创建项目
创建编写application.yml或者bootstrap.yml配置文件,编写启动类。
问题:
上述两种创建的过程有没有重复性工作呢?
nacos,sleuth一些配置能不能也一块随着项目创建出来呢?
项目中的一些自己个性化的东东可不可以也随之创建呢 ?
接下来我们自己创建一个mavne archetype模板,以后用我们自己的模板创建项目。解决上述问题。是不是有点脚手架的感觉。。
创建cloud maven archetype
-
创建一个普通maven项目
File–>new module—>maven–>next
展示;
module的名字我由于已经创建了,这里飘红。可忽略。
点击finish完成。 -
编写pom.xml
1)定义版本号
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<junit.version>4.12</junit.version>
<log4j.version>1.2.17</log4j.version>
<lombok.version>1.16.18</lombok.version>
<mysql.version>5.1.47</mysql.version>
<druid.version>1.1.16</druid.version>
<mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
</properties>
我这里为了看着方便,spring boot和cloud的版本号没有去引用properties.
spring boot和cloud的版本怎么选择呢?这里可以看一下官网提供的对应关系。访问这个网址:
https://start.spring.io/actuator/info
<dependencyManagement>
<dependencies>
<!--spring boot 2.2.2-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud Hoxton.SR1-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud alibaba 2.1.0.RELEASE-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-s