Spring Cloud 版本 version 命名说明

目录

1. Spring Cloud 的多版本:

2. 多版本关系和依赖:

3. 各版本之间的区别:

4. 版本选择建议:


开发部署 Spring Cloud 微服务框架,需要先确定 Spring Cloud 的相关环境版本,主要包含:Spring Cloud、Spring Cloud Netflix、JDK、JRE、Java Version等相关版本,以及环境的配置。

spring boot/cloud 项目中,会看到如下配置:

<parent>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-parent</artifactId>
        <version>Edgware.SR3</version>
        <relativePath/>
 </parent>

1. Spring Cloud 的多版本:

Spring Cloud 版本 version 命名说明

这么多不同的版本,它们都有什么区别,我们开发微服务到底使用哪一个版本呢?这些版本与 Spring Boot 版本又是一个怎样的依赖关系?带着这些问题,我们必须把它一一搞清楚,不然总会让你很头疼。。

首先 Spring Cloud 是一个由很多子项目组成的庞大项目,Spring Cloud 的主要项目如下:

然而,这些子项目都有不同的发布阶段,为了管理主项目和子项目的依赖关系,以及为了避免和子项目版本的冲突和误解,主项目版本命名并没有采用和子项目数字版本化的形式,而是采用了英文名称。

英文命名方式也比较有意思,Spring Cloud 采用了英国伦敦地铁站的名称来命名,并由地铁站名称字母A-Z依次类推的形式来发布迭代版本。

由上可知,Spring Cloud 的第一个版本 "Angel" 就不觉得奇怪了,接着 "Brixton" 就是第二个版本。当一个项目到达发布临界点或者解决了一个严重的BUG后就会发布一个 "service Release" 版本, 简称 SR(X)版本,x 代表一个递增数字。

由此,结合上图我们可以知道: "Finchley M9" 就是目前最新的开发版本,"Edgware SR3" 是最新稳定版本。

2. 多版本关系和依赖:

主项目和子项目版本的依赖关系:

Spring Cloud 版本 version 命名说明

Spring Cloud & Spring Boot 依赖关系:

Spring Cloud 版本 version 命名说明

  • Finchley 是基于 Spring Boot 2.0.x 构建的,不支持 Spring Boot 1.5.x
  • Dalston 和 Edgware 是基于 Spring Boot 1.5.x 构建的,不支持 Spring Boot 2.0.x
  • Camden 构建于 Spring Boot 1.4.x,但依然能支持 Spring Boot 1.5.x

注意:Brixton 和 Angel 版本在2017年7月已经停止更新迭代了,我们就不关注它的版本依赖关系了。

3. 各版本之间的区别:

开发代号看似没有什么规律,但实际上首字母是有顺序的,比如:Dalston版本,我们可以简称 D 版本,对应的 Edgware 版本我们可以简称 E 版本。

D、E版本:二者均基于SpringBoot的1.5.x版本,但支持其他组件的版本不同,如以 Dalston.SR4 和 Edgware.RELEASE 来对比:

  • pring-cloud-config 分别对应 1.3.3和 1.4.0;
  • spring-cloud-netflix 分别对应 1.3.5和 1.4.0;
  • spring-cloud-consul 分别对应 1.2.1和 1.3.0;
  • spring-cloud-gateway 前者不支持,后者 1.0.0。

F版本:F版本是个绝对的大版本,几乎所有组件,全部同步变更版本号为2.x;

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

M: MileStone,小版本,M1表示第1个里程碑版本,一般同时标注PRE,表示预览版版。

SR: Service Release,小版本,SR1表示第1个正式版本,一般同时标注GA:(GenerallyAvailable),表示稳定版本。

4. 版本选择建议:

  1. 各个版本之间组件变化不大,但细节略有不同,比如配置项名称、或者新版本增加新的配置方式;
  2. 选择哪个版本都不是大问题,但提醒一下,遇到坑时,最好根据版本进行查询,否则你会发现你找到的办法不行,实际上是版本不匹配;
  3. 如果你项目需要和其他老项目交叉,以兼容为第一要务;
  4. 如果全新项目,可以考虑较新版本,稳定的版本,如E版,小编用“Edgware.SR3”;
  5. 如果你爱好踩坑,追求最新最前端的技术,F版本拿去不谢;
  6. 小版本没啥可说的,尝鲜:SNAPSHOT,生产:GA。

 

更多精彩,请关注我的"今日头条号":Java云笔记
随时随地,让你拥有最新,最便捷的掌上云服务