当前位置: 首页 > 图灵资讯 > 技术篇> 史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇

来源:图灵教育
时间:2023-06-27 15:10:49

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇_spring

悟纤:师傅,Spring Cloud的版本是英文的,SR2、SR5、GA是什么东东?

师傅:那不是你的东东,而是你的西西。

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇_spring_02

悟纤:师傅,你看你,你看你,好家伙~ 你学坏了!

师傅:我觉得你自己又开脑筋了。

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇_spring_03

悟纤:我头上没有洞,怎么能大开呢?

师傅:杠精就是你。

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇_Cloud_04

悟纤:师傅,请多指教; 给我一个喷点,我可以杠杆整个地球。

师傅:如果你今天不杠倒你,你就不会相信你是老师。

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇_Cloud_05

一、数字版本号 – 偷下荤

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇_Cloud_06

师傅:徒儿,从最简单的数字版本号开始。让我们谈谈Spring Boot2.1.5版本号是什么意思?

徒儿:不是Spring Boot版本号为2.1.5版,2代表这是第二代SpringBoot, 1是迭代版,5是bug修复吗??

师傅:嗯嗯,答案还不错。以下是重点:

(1)其中2: 表示主版本号,表示是我们SpringBoot的第二代产品。

(2)其中1: 表示二次版本号,增加了一些新功能,但主体结构没有变化,兼容。

(3)其中5: 表示bug修复版。

(4)所以2.1.5合并是springboot第二代版本的第一个小版本的第五个bug修复版本。

结论:版本格式 -> 主版本号.子版本号.修正版本号。

师傅:徒儿,你知道这个版本号的递增规则吗?

悟纤:请师傅给我建议。

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇_版本号_07

师傅:让我想想,怎么告诉你。

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇_版本号_08

主版本号:当你做不兼容的时候 API 修改或大调整;

子版本号:当您添加向下兼容功能时;

修订号:当您对向下兼容问题进行修正时;

所以,我们可以知道,SpringBoot 1.Spring Boot 2.x不能通过修改版本号直接升级,但如果要从2.1开始.2020年3月6日升级至2.2.如果是5版,简单修改版本就可以成功升级。

二、尾巴上有文字 – 牛逼的一批

师傅:当我们使用版本时,我们会发现还有一个点缀.RELEASE,这是什么意思?

悟纤:这不是官方版本。

师傅:那么.SR1、.M1呐?

悟纤:这又是什么儿子?

师傅:这个比上面复杂一点,耐心听老师告诉你。

snapshot快照

alpha内测

beta公测

release稳定版本

GA最稳定的版本

正式版Final

Pro(professional)专业版

Plus强化版

Retail零售版

演示版DEMO

build内部标号

豪华版Delux (deluxe:豪华,华丽)

corporation或Enterpraise 企业版

M1 M2 M3 M是milestone的简写 里程碑的意思

RC版RC:(Release Candidate),几乎不会添加新的功能,但主要关注错误

SR修正版

Trial试用版

Shareware共享版

Full全版

师傅:这个名词太多了。这里我们来谈谈一些常见的。

build-snapshot:开发版,又称快照版。当前版本正在开发中。开发完成后,自行测试,让团队其他人进行测试和使用;

M1...M2(Milestone):里程碑版在版本发布前 会有几个里程碑版本。我用snapshot版本开发了一段时间。我觉得如果我最近写了代码杠杆,请记录整个里程碑版本。记录我们的重要时刻是你我未来的记忆。

RC1…RC2(Release Candidates):发布候选人。内部开发已经到了一定的阶段。每个模块集成后,经过仔细测试,整个开发团队认为软件稳定,可以向外部发布。

release:正式版本。候选人发布后,说明整个框架已经到了一定的阶段,可以在市场上大面积使用。然后发布,让用户受欢迎。

SR1…SR2(Service Release):修改版本。这是什么意思?这不是release版本发布后,让大多数群体使用。无论架构师有多强大,他们都无法编写零bug代码。此时,优先修复release版本的问题。此时,每个迭代版本都是SR1、SR2和SR3。

上面的顺序是这样的:

snapshot –>M1…MX –> RC1…RCX –> release–> SR1…SRX

相应的文本理解:

开发版本(BS) --(如果发展到一个小阶段,需要标记)-->里程碑版本(MX) --(版本已经到了一个相对稳定的阶段,可以对外发行,但是可能还是有修复问题的。此时只修复,不增加新功能。)-->发布候选人(RC1) --(BUG修复完成,发布)-->正式版本(release) --(外部反馈存在一些问题,内部修复)-->修正版本(SRX)

在这里,我们经常看到的版本号应该是这样的:

结论:版本格式-> 主版本号.子版本号.修正版本号.软件版本阶段

3.版本背后的英文标志 – 给力真的很厉害

师傅:我们会在网站上看到CURENT、PRE等等,这是什么意思?

CURRENT:当前推荐版本

GA:稳定版,可用于生产

PRE:里程碑版/预览版

SNAPSHOT :快照

这只是一个标志,方便每个人在使用时选择版本。我们通常选择CURENT和GA版本,SNAPSHOT不选择。

师傅:你可能不明白这些。不要慌。以后你会亲自为你表演。

四、Spring cloud版本说明 – 您太棒了!!!!

第一代版:Angle,第二代版:Brixton;

第三代版:Camden,第四代版:Dalston;

第五代版: Edgware,第六代版:Finchley;

第七代版:GreenWich,第八代版:Hoxton;

该版本以伦敦地铁站命名,并按地铁站首字母A-Z命名。为什么我们的SpringCloud会这样发布版本,因为如果我们是传统的话 2.1.5.如果release发布,SpringCloud将包含许多子项目的版本,这将导致混合

我们可以理解,使用英文版命名是为了在Spring中统一管理 Cloud下的子项目版本集合,否则会造成版本混乱。

五、举个栗子

5.1 Spring Boot版本的真相

师傅:不管你说得多多,说得多好,最好脱下裤子跑。

师傅:欧侯,好像说错话了。不管有多少理论,最好举个栗子。请看大屏幕:

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇_版本号_09

(数据采集于2020年3月6日星期五)

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇_spring_10

(1)2.2.CURENTGA

2.2.5:第二代Spring Boot第二个小版本的第五次bug修复;

CURRENT :这是目前官网推荐的使用版;

GA:这是一个稳定版本,可用于生产环境。

那介绍使用时,如何使用呢?

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

BTW:看,在引入版本中,没有CURENT、GA,这两个是告诉我们使用Spring Boot的人:Spring Boot 2.2.5版现在是稳定版(GA),可用于生产环境,官网强烈推荐使用。

(2)2.3.0 M2PRE

2.3.0:第二代Spring Boot第三个小版本的第0次bug修复;

M2:这是2.3.第二次里程碑版0版;

PRE:程碑版/预览版,告诉我们这是里程碑版,先偷腥的人可以来;

那介绍使用时,如何使用呢?

<parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.3.0.M2</version>    </parent>

还记得我们说的,里程碑版本是一个记录内部开发的版本,所以,如果它是这样引入的,它就不能使用,因为它还没有发布到官方网站上,所以在使用时,需要添加仓库:

<repositories>        <repository>            <id>spring-snapshots</id>            <url>https://repo.spring.io/snapshot</url>            <snapshots><enabled>true</enabled></snapshots>        </repository>        <repository>            <id>spring-milestones</id>            <url>https://repo.spring.io/milestone</url>        </repository>    </repositories>    <pluginRepositories>        <pluginRepository>            <id>spring-snapshots</id>            <url>https://repo.spring.io/snapshot</url>        </pluginRepository>        <pluginRepository>            <id>spring-milestones</id>            <url>https://repo.spring.io/milestone</url>        </pluginRepository>    </pluginRepositories>

(3)2.2.6 SNAPSHOT

2.2.6:第二代Spring Boot第二个小版本的第六次bug修复;

SNAPSHOT:这是我们内部开发的版本,也是2.2.bug迭代版本5版本;

那介绍使用时,如何使用呢?

<parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.2.6.BUILD-SNAPSHOT</version> </parent>

当然,这里也需要添加spring.io的repositories,这里省略…

(4)2.1.13GA

2.1.13:第一代Spring Boot第1个小版本的第13次bug修复;

GA:这是一个可用于生产的稳定版本;

2.1.13和2.2.5版本的区别在于2.2.5有一个CURENT标志,表明官方更推荐2.2.如果您目前正在使用2.11.x版本,也是稳定版本,官网也在修复这个版本的问题。

那介绍使用时,如何使用呢?

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

5.2 Spring Cloud版本的真相

师傅:Spring Boot说了这么多,接下来,为老师带你窥视Spring Cloud:

(下图数据收集于2020年3月6日星期五)

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇_spring

(1)HoxtonSR2CURRENTGA

Hoxton:第八代Spring Cloud版;

SR2:修正版,修正两次,说明release后,进行了两次问题修复。

CURRENT:这是目前官网推荐的版本;

GA:稳定版,可用于生产;

那介绍使用时,如何使用呢?

<dependency>        <groupId>org.springframework.cloud</groupId>        <artifactId>spring-cloud-dependencies</artifactId>        <version>Hoxton.SR2</version>        <type>pom</type>        <scope>import</scope></dependency>

(2)Hoxton SNAPSHOT

Hoxton:第八代Spring Cloud版;

SNAPSHOT:开发版,快照版;

那介绍使用时,如何使用呢?

<dependency>        <groupId>org.springframework.cloud</groupId>        <artifactId>spring-cloud-dependencies</artifactId>        <version>Hoxton.BUILD-SNAPSHOT </version>        <type>pom</type>        <scope>import</scope></dependency>

当然,这里也需要添加spring.io的repositories,这里省略…

5.3 Spring Cloud和Spring Boot的对应关系

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇_Cloud_12

目前Hoxton对应的Spring Boot是2.2.x

5.4生产版本选择 – 非常重要,非常重要

(1): 打死不用 非稳定版// end-of-life(不维护)版本

(2):release版本等等(等别人去探雷);

(3):推荐 SR2以后可以放心使用;

六、悟纤总结

师傅:徒儿,你说你不服吗?

历史上最详细的解释:版本号命名前世今生(Spring

悟纤:师傅,我对你的敬仰犹如滔滔江水连绵,犹如黄河泛滥一发失控。

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇_spring_14

师傅:又来拍马屁了。

悟纤:师傅,又不是马,怎么能说是拍马屁啊,要说也是拍人屁啊。

师傅:你… 你… 你要气死为师...

悟纤:师傅,师傅,莫生气,气坏身体无人替代。来吧,师傅,我给你一个简单的总结。

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇_spring_15

(1)Spring Boot版本格式:主版本号、子版本号、修正版本号、软件版本阶段。

(2)Spring Cloud版本格式:(英文)主版本号。软件阶段版。

(3)Spring Boot 2.3.5 :Spring代表Spring Boot第二代第三小版第五次bug修复;

(4)build-snapshot:开发版/快照版;

(5)MX:里程碑版;

(6)release:正式版本;

(7)SRX:修正版本;

(8)版本阶段:snapshot –> M1…MX –>RC1…RCX –> release –> SR1…SRX

(9)Spring 以伦敦地铁站为版本名称的Cloud,并按地铁站名称首字母A-Z依次命名。

(10)Spring Boot版本升级,发现没有SR1...SR2的标志,所以Spring Boot这样的数字是通过最后一个数字来解释的;Spring Cloud是一个没有数字概念的英文版本号,所以是通过.SRX的方式。

师傅:总结还不错,那师傅就做个大总结吧。

悟纤:师傅的总结要敲重点。

师傅:考试一定要考,哈哈,师傅的总结主要是为了方便理解。

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇_spring_16

(1)版本主要由三部分组成:版本号+版本阶段+版本标识;

(2)版本号一般由三位数组成:主版本号、次版本号、版本修正号(如:Spring Boot);当框架是n个子框架的集合时,为了统一管理子项目,此时版本号为:英文名称(Spring Cloud)。

(3)版本阶段:为了记录版本的各个阶段和开发阶段(snapshot) - 里程碑阶段(MX) - 发布候选(RCX)- 正式版本(release) - 修正版本(SRX);Spring Boot版本阶段就会比较简单,Spring Cloud的版本阶段基本遵循上述阶段。

(4)版本标识:为了方便用户群体的开发,选择合适的版本,也说明了当前版本号的情况。SNAPSHOT//PRE/GA/CURRENT。

选择生产版本 – 非常重要,非常重要

(1): 打死不用 非稳定版// end-of-life(不维护)版本

(2):release版本等等(等别人去探雷);

(3):推荐 SR2以后可以放心使用;

史上讲解最详细:版本号命名的前世今生(Spring Cloud版本命名原来是这么回事)- 值得收藏一生 - 第299篇_spring_17