springcloud 版本的说明和各版本依赖如何引入工程

一、前言

搭建springcloud的开发环境第一步就是对版本的选择和导入各种依赖,但其很多时候在这一步的时候就会因为版本的不匹配而造成依赖下载错误。

可能会出现下边这几种情况:

(1) springcloud的版本和springboot的版本不匹配

(2) 引入springcloud中的组件时组件的依赖id和版本不对应

例如eureka,feign这两个在springcloud的Edgware 之后和之前的版本中依赖的id是不一样的。

当出现这些版本不匹配的情况时依赖就会下载不下来,经历各种折腾。

这篇文章试图对使用springcloud时的这种版本对应问题做个总结。

二、springcloud和springboot的版本对应

要了解springcloud的版本情况,最直接的方式就是查看springcloud的官网

springcloud官网

在这个页面上往下翻就可以看到springboot和springcloud的对应关系

Release Train Boot Version
2021.0.x aka Jubilee 2.6.x
2020.0.x aka Ilford 2.4.x, 2.5.x (Starting with 2020.0.3)
Hoxton 2.2.x, 2.3.x (Starting with SR5)
Greenwich 2.1.x
Finchley 2.0.x
Edgware 1.5.x
Dalston 1.5.x

然后根据这个表格去选择springcloud的大版本,版本就不会对应不上了。

三、springcloud的小版本说明

上面表格中给出了springcloud的大版本,每个大版本都会有小版本(比如SR),小版本的含义是这样的

M * 里程碑构建 - 可能不完整

GA - 稳定版,内部开发到一定阶段了,各个模块集成后,经过全面测试发现没有问题,可对外发行了。这个时候叫GA(General Availability)。基本上可以使用了。没有严重的BUG问题,但是有未测出的BUG隐患。不推荐商业使用

SNAPSHOT:快照版本,随时可能修改

RELEASE: 正式发布版

SR: 如果RELEASE版本有BUG,就会发布SR版本来修复。

所以使用的时候 如果有SR版本我们就选择最新的SR版本,没有的话就选RELEASE 版本

不知道有哪些小版本怎么办?springcloud的官网上,点击上边那个表格中的大版本名称,会跳转到项目的github上的wiki页面上,在这个页面上可以看到小版本的情况和每个小版本都做了哪些修改。

比如下边这个链接上可以看到Dalston版本的小版本情况

Dalston小版本情况

图片

四、常用组件的依赖引入

如何把springcloud引入一个springboot工程中呢,依然可以在官网上找到答案

springcloud官网,还是这个页面,继续往下翻,在上边那个表格的下方就会讲如何引入。

这里简单写一下。

4.1 Dalston版本依赖的引入

4.1.1 创建一个父工程

我们需要一个父工程来统一管理springcloud的依赖,所以创建一个maven父工程,在pom文件中限定springcloud的版本为Dalston.SR5,springboot的版本为1.5

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
    </parent>

<properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <spring.cloud-version>Dalston.SR5</spring.cloud-version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

4.1.2 创建eureka server工程

创建Eureka server工程,引入eureka-server的依赖,springboot的依赖。

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
    </dependencies>

这样eueka server的依赖就引入成功了。

4.1.3 创建eureka client工程

创建eureka client工程,在这个工程中引入eureka client的依赖

   <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
    </dependencies>

这样eureka client的依赖就引进来了。

4.1.4 feign的引入

微服务之间的相互通信使用feign来进行,所以需要引入feign的依赖。我们需要在eureka client工程中引入,因为

springcloud的版本已经在父工程中锁定了,所以直接在子工程中添加依赖就可以了。

在工程中添加如下依赖

	   <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>

经过上边的步骤,Dalston版本的springcloud中这几个组件的依赖就成功引入到工程中了。

4.2 Edgware版本依赖的引入

这一节来看下Edgware版本的springcloud依赖如何引入。根据上文讲的版本选择规则,

springboot我们依然选择1.5.9.RELEASE

springcloud选择Edgware.SR6

父子工程的建立和上边4.1一样就不重复了,依然是父工程锁定springcloud的版本,子工程引入对应的依赖。

要注意的从这个版本开始springcloud的一些组件的依赖id变了,需要使用使用新的id才能引入成功

Deprecated Edgware Starter
spring-cloud-starter-archaius spring-cloud-starter-netflix-archaius
spring-cloud-starter-atlas spring-cloud-starter-netflix-atlas
spring-cloud-starter-eureka spring-cloud-starter-netflix-eureka-client
spring-cloud-starter-eureka-server spring-cloud-starter-netflix-eureka-server
spring-cloud-starter-feign spring-cloud-starter-openfeign
spring-cloud-starter-hystrix spring-cloud-starter-netflix-hystrix
spring-cloud-starter-hystrix-dashboard spring-cloud-starter-netflix-hystrix-dashboard
spring-cloud-starter-ribbon spring-cloud-starter-netflix-ribbon
spring-cloud-starter-spectator spring-cloud-starter-netflix-spectator
spring-cloud-starter-turbine spring-cloud-starter-netflix-turbine
spring-cloud-starter-turbine-amqp DELETED
spring-cloud-starter-turbine-stream spring-cloud-starter-netflix-turbine-stream
spring-cloud-starter-zuul spring-cloud-starter-netflix-zuul

上边这个表格中右边一列就是新的artifactId,只要这个对了依赖就能正常下载,许多时候下载依赖都是这一步出了错然后下载失败。

4.3 Finchley版本依赖的引入

根据上边第二节的表格,使用这个版本时springboot的版本使用 2.0.9.RELEASE ,springcloud使用 Finchley.SR4

父子工程还和上边保持一致

然后springcloud相关的依赖要使用 4.2节列出的最新artifactId来引入这样就没问题了。

4.4 Greenwich版本依赖的引入

这个版本的springcloud使用时,springboot选择2.1.x系列,这里就选择 2.1.18.RELEASE

springclound我选择 Greenwich.SR6

然后springcloud相关的依赖要使用 4.2节列出的最新artifactId来引入这样就没问题了。

其他版本的springcloud处理方式是类似的,这里就不再重复了。

总结

通过上面的内容可以看出,成功引入springcloud的依赖,首先要选择匹配版本的springcloud和springboot,

然后就是依赖的artifactId要写对,从Edgware版本开始,springcloud的组件artifactId有变化,这个要注意。