1. Digitale Versionsnummer:
1.1 Bedeutung:
Am Beispiel von Spring Boot 2.1.5 sind die Bedeutungen: Version -> Hauptversionsnummer. Unterversionsnummer. Überarbeitete Versionsnummer . Die konkrete Erklärung lautet wie folgt:
a, 2 gibt die Hauptversionsnummer an , was darauf hinweist, dass es sich um unser Spring Boot- Produkt der zweiten Generation handelt .
b. 1 gibt die Nebenversionsnummer an , einige neue Funktionen wurden hinzugefügt , aber die Hauptstruktur hat sich nicht geändert und ist kompatibel.
c und 5 stellen Bugfix- Versionen dar .
d. Spring Boot 2.1.5 ist also die fünfte Bugfix-Version der ersten Nebenversion der zweiten Generation von Spring Boot .
1.2 Inkrementelle Regeln:
Anhand der obigen Erklärung können wir erkennen, dass die Versionen von SpringBoot 1.x und SpringBoot 2.x nicht direkt über die Versionsnummer aktualisiert werden können. Wenn Sie jedoch von Version 2.1.5 auf Version 2.2.6
Typ |
erklären |
Hauptversionsnummer | Wenn Sie inkompatible API-Änderungen vornehmen oder größere Anpassungen vornehmen . |
Subversion-Nummer | Wenn Sie funktionale Erweiterungen vornehmen, die abwärtskompatibel sind . |
Änderungsantrag Nr | Wenn Sie einen Abwärtskompatibilitäts-Bugfix durchführen . |
2. Textversionsnummer:
Wenn wir die Version verwenden, stellen wir fest, dass auf viele Versionen ein Suffix folgt, z. B. .RELEASE . Was bedeutet das? Sortieren wir die Suffixinformationen und Erklärungen, auf die Sie möglicherweise stoßen, wie folgt:
Bedeutung |
erklären |
Schnappschuss | Schnappschuss |
Alpha | geschlossene Beta |
Beta | Beta |
freigeben | stabile Version |
GA | stabilste Version |
Finale | formelle Ausgabe |
Pro (professionell) | Professionelle Ausgabe |
Plus | Verbesserte Edition |
Einzelhandel | Retail-Version |
Demo | Demoversion |
Bauen | Internes Etikett |
Deluxe | Deluxe-Edition |
Corporation oder Unternehmen | Enterprise Edition |
M1、M2、M3 | Meilenstein |
RC | Es werden fast keine neuen Funktionen hinzugefügt und das Hauptaugenmerk wird auf dem Debuggen liegen. |
SR | Modifizierte Version |
Gerichtsverhandlung | Probeversion |
Shareware | geteilte Version |
Voll | Vollversion |
Hier sind einige häufig verwendete Substantive:
Bedeutung |
erklären |
Build – Schnappschuss | Die Entwicklungsversion , auch Snapshot-Version genannt . Die aktuelle Version befindet sich in der Entwicklung . Testen Sie sie nach Abschluss der Entwicklung selbst und lassen Sie sie auch von anderen Teammitgliedern testen. |
M1....M2 | Meilensteinversionen : Vor der Veröffentlichung der Version wird es mehrere Meilensteinversionen geben. Wenn ich die Snapshot- Version für eine Weile zur Entwicklung verwende, finde ich, dass der kürzlich geschriebene Code gut ist. Setzen Sie also ein paar Meilensteine und zeichnen Sie ihn auf! Halten Sie diesen bedeutsamen Moment fest. |
RC1 ....RC2 | Release-Kandidat . Die interne Entwicklung hat ein bestimmtes Stadium erreicht. Nach der Vererbung jedes Moduls ist das gesamte Entwicklungsteam der Meinung, dass die Software nach sorgfältigem Testen stabil und problemlos ist und für die Außenwelt freigegeben werden kann. |
freigeben | Offizielle Version . Nachdem die Release-Kandidaten fast fertig sind, bedeutet dies, dass das gesamte Framework ein bestimmtes Stadium erreicht hat und für den groß angelegten Einsatz auf den Markt gebracht werden kann, sodass es für alle zur Nutzung freigegeben wird. |
SR1 .... SR2 | überarbeitete Fassung . Nach der Veröffentlichung der offiziellen Version finden Benutzer Probleme, und Architekten beheben diese Fehler , dh sie beheben die Probleme der Release- Version. Zu diesem Zeitpunkt sind die Versionen jeder Iteration SR1 , SR2 und SR3 . |
Gemäß der obigen Erklärung lautet die Veröffentlichungsreihenfolge der gesamten Version:
1. Snapshot : Die Entwicklungsversion ( BS ). Wenn die Entwicklung ein kleines Stadium erreicht, muss sie markiert werden.
2. M1 .... MX : Meilensteinversion ( MX ), die Version hat ein relativ stabiles Stadium erreicht und kann für die Öffentlichkeit freigegeben werden, es kann jedoch immer noch Probleme mit Reparaturen geben. Derzeit werden nur Reparaturen durchgeführt. und neue Funktionen werden nicht entwickelt.
3. RC1....RCX : Release Candidate ( RC1 ), Fehlerbehebung abgeschlossen, veröffentlicht.
4. Release : Die offizielle Version ( Release ), es gibt einige von der Außenwelt gemeldete Probleme und es werden interne Reparaturen durchgeführt.
5、SR1 .... SRX: 修正版本(SRX)。
总结:
截至到目前为止,我们可以看到的版本号应该是这个样子:版本格式 -> 主版本号.子版本号.修正版号.软件版本阶段。
三、英文标识:
我们经常在网站上发现些标着 CURRENT、PRE 等等的标识,这些又是什么意思呢?如下所示:
含义 |
解释 |
CURRENT | 当前推荐的版本 |
GA | 稳定版,可用于生产 |
PRE | 里程碑版 / 预览版本 |
SNAPSHOT | 快照 |
这里只是一个标识,方便大家在使用的时候选择版本,我们一般的选择是 CURRENT 和 GA 版本, SNAPSHOT 打死不能选。
四、Spring Cloud 版本说明:
spring cloud 的发布版本是以伦敦地铁作为版本命名,并按照地铁站的首字母 A - Z 依次命名。如下所示,但是在 2020 年,又改为了日历化版本。这里不做过多的介绍。
含义 |
解释 |
Angle | 第一代版本 |
Brixton | 第二代版本 |
Camden | 第三代版本 |
Dalston | 第四代版本 |
Edgware | 第五代版本 |
Finchley | 第六代版本 |
GreenWich | 第七代版本 |
Hoxton | 第八代版本 |
为什么我们的 spring cloud 会以这种方式来发布版本?因为假如我们发布的是传统的版本如 2.1.5.release 。spring cloud 会包含很多子项目的版本就会给人造成混乱。
我们可以这么理解,使用英文版本的命名方式,就是为了统一管理 spring cloud 下的子项目版本集合。否则会造成版本混乱。
五、举例:
5.1、spring boot 版本真相:
今天是 2021 年 11 月 24 日,我们进入到 spring boot 的官网上,查看目前最新的 spring boot 的版本信息,如下图所示:
5.1.1、2.6.0 CURRENT GA:
其中 2.6.0 表示的意思是这是第二代 spring boot 的第 6 个小版本的第 0 次 bug 修复。CURRENT 的意思是这是官网推荐使用的版本。GA 的意思是这是稳定版本,可用于生产环境。
那么该如何引入到我们的生产环境中呢?只需要配置如下依赖即可:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.0.RELEASE</version>
</parent>
我们通过观察可以发现,在引入的依赖中,并没有 CURRENT,GA ,这两个标签就是告知我们这些使用 spring boot 的人:spring boot 2.6.0 版本现在是一个稳定的版本(GA),可用于生产环境了,官网大力推荐进行使用。
5.1.2、2.6.1-SNAPSHOT:
其中的 2.6.1 表示的意思是这是第二代 spring boot 的第 6 个小版本的第 1 次 bug 修复。SNAPSHOT 的意思是这是我们内部在开发的一个版本,也是对于 2.6.0 版本的 bug 迭代版本。
那么该如何引入到我们的生产环境中呢?只需要配置如下依赖即可:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.1.BUILD-SNAPSHOT</version>
</parent>
5.1.3、2.5.7 GA:
其中的 2.5.7 表示的意思是这是第二代 spring boot 的第 5 个小版本的第 7 次 bug 修复。GA 的意思是这是稳定版本,可用于生产。
2.5.7 和 2.6.0 版本差别在于 2.6.0 多了一个 CURRENT 标识,说明官方更推荐 2.6.0 版本,如果你当前使用的是 2.5.7 版本的话,也是稳定的版本,官网也在修复此版本存在的问题。
那么该如何引入到我们的生产环境中呢?只需要配置如下依赖即可:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.7.RELEASE</version>
</parent>
5.1.4、2.3.0 M2 PRE:
再拓展一个上面官网没有的版本,可实际我们可能用得上的版本,其中的 2.3.0 表示的意思是这是第二代 spring boot 的第 3 个小版本的第 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>
5.2 spring cloud 版本真相:
今天是 2021 年 11 月 24 日,我们进入到 spring cloud 的官网上,查看目前最新的 spring cloud 的版本信息,如下图所示:
5.2.1、2020.0.4 CURRENT GA:
2020.0.4 的意思是这是 spring cloud 的 2020 年第 0 个小版本的第 4 次 bug 修复版本,CURRENT 的意思是这是官网推荐使用的版本。GA 的意思是这是稳定版本,可用于生产环境。
那么该如何引入到我们的生产环境中呢?只需要配置如下依赖即可:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2020.0.4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
5.2.2、2021.0.0-SNAPSHOT:
2021.0.0 的意思是这是 spring cloud 的 2021 年第 0 个小版本的第 0 次 bug 修复版本,
SNAPSHOT 的意思是这是我们内部在开发的一个版本。
那么该如何引入到我们的生产环境中呢?只需要配置如下依赖即可:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
由于这个也是未发布版本,也需要添加相同的仓库,如下所示:
<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>
5.2.3、2021.0.0-RC1 PRE:
2021.0.0 的意思是这是 spring cloud 的 2021 年第 0 个小版本的第 0 次 bug 修复版本,
RC1 的意思是这是我们发布候选的一个版本。PRE 的意思是里程碑版本 / 预览版本,告知我们这是个里程碑版本,喜欢尝试的人可以先来。
那么该如何引入到我们的生产环境中呢?需要配置如下依赖:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.0-RC1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-otel-dependencies</artifactId>
<version>1.0.0-M1</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
由于这个也是未发布版本,也需要添加相同的仓库,如下所示:
<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>
5.2.4、Hoxton.SR12 GA:
Honton 的意思是这是第八代 spring cloud 版本,SR12 表示这是修正版本,修正了 12 次,说明 release 之后,进行了 12 次的问题修复。GA 的意思是这是稳定版本,可用于生产。
那么该如何引入到我们的生产环境中呢?只需要配置如下依赖即可:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR12</version>
<type>pom</type>
<scope>import</scope>
</dependency>