【问题标题】:Understanding Spring Cloud Release Versions了解 Spring Cloud 发布版本
【发布时间】:2017-06-26 17:00:36
【问题描述】:
春天的人们在发布大量优质项目方面做得很好。我们一直在使用的其中之一是 Spring Cloud 及其各种子项目。
让我真正感到困惑的一个方面是 Spring Cloud 版本名称。例如,如果您转到 Spring Cloud,它会显示为 Camden 或 Angel 或 Brixton。然后,如果您转到特定的项目站点,例如 Spring Cloud Config,它会显示类似 1.3.0 或 1.2.3 的版本
关于这些的两个问题。
-
从命名版本(Camden、Brixton、Angel)很难想象哪个是最新的及其顺序。有没有什么地方有据可查?
-
命名版本如何与子项目编号版本相关?
感谢您的宝贵时间。
【问题讨论】:
标签:
spring-boot
spring-cloud
spring-cloud-config
【解决方案1】:
发布问题后,在主页上找到了有关这些版本的一些信息。这肯定会解决问题。
Spring Cloud 是一个伞形项目,由原则上不同发布节奏的独立项目组成。为了管理投资组合,发布了 BOM(材料清单),其中包含对单个项目的精选依赖项(见下文)。发布火车有名称,而不是版本,以避免与子项目混淆。这些名称是伦敦地铁站名称的字母顺序(因此您可以按时间顺序对它们进行排序)(“Angel”是第一个版本,“Brixton”是第二个版本)。当单个项目的点发布累积到临界质量时,或者如果其中一个项目中存在需要所有人都可以使用的严重错误,则发布火车将推出名称以“.SRX”结尾的“服务发布”,其中“X”是一个数字。
【解决方案2】:
Spring Cloud 是一个伞形项目,由原则上不同发布节奏的独立项目组成。为了管理投资组合,发布了 BOM(材料清单),其中包含对单个项目的精选依赖项(见下文)。发布火车有名称,而不是版本,以避免与子项目混淆。这些名称是一个字母序列(因此您可以按时间顺序对它们进行排序)以及伦敦地铁站的名称(“Angel”是第一个版本,“Brixton”是第二个版本)。当单个项目的点发布累积到临界质量时,或者如果其中一个项目中存在需要所有人都可以使用的严重错误,则发布火车将推出名称以“.SRX”结尾的“服务发布”,其中“X”是一个数字。
-
通常我们有一个基于 Spring Boot 的现有项目,并且我们希望向其添加来自 Spring Cloud 项目的一个或多个依赖项,然后我们面临的问题是那个特定的 Spring Cloud我应该使用与我当前版本的 Spring Boot 兼容的项目吗?
与 Spring Boot 版本兼容的版本发布在 Spring Cloud 的 home page 上,在撰写本文时,这里是:
此外,每个发布系列的release notes可能包含各个子项目的不同兼容版本。另外here,您可以找到他们的 GH 页面,了解给定的发布系列以及有关它使用的子项目的更多信息。
现在要更准确地确定您感兴趣的特定子项目的确切版本,例如spring-cloud-starter-openfeign,要知道这个umbrella项目无非是:
一个主 pom 文件 spring-cloud-dependencies-parent 其中:
特定 spring-boot-starter-parent 的子 pom,它可以告诉您给定发布序列使用的 spring boot 版本。
它还导入了spring-cloud-dependencies,它声明了我们的发布列车正在使用的各个子项目的所有版本,例如对于 Hoxton.SR3:
<properties>
<spring-cloud-kubernetes.version>1.1.2.RELEASE</spring-cloud-kubernetes.version>
<spring-cloud-security.version>2.2.1.RELEASE</spring-cloud-security.version>
<spring-cloud-config.version>2.2.2.RELEASE</spring-cloud-config.version>
<spring-cloud-contract.version>2.2.2.RELEASE</spring-cloud-contract.version>
<spring-cloud-netflix.version>2.2.2.RELEASE</spring-cloud-netflix.version>
<spring-cloud-vault.version>2.2.2.RELEASE</spring-cloud-vault.version>
<spring-cloud-openfeign.version>2.2.2.RELEASE</spring-cloud-openfeign.version>
<spring-cloud-task.version>2.2.3.RELEASE</spring-cloud-task.version>
<spring-cloud-stream.version>Horsham.SR3</spring-cloud-stream.version>
<spring-cloud-commons.version>2.2.2.RELEASE</spring-cloud-commons.version>
<spring-cloud-build.version>2.2.3.RELEASE</spring-cloud-build.version>
<spring-cloud-zookeeper.version>2.2.1.RELEASE</spring-cloud-zookeeper.version>
<spring-cloud-consul.version>2.2.2.RELEASE</spring-cloud-consul.version>
<spring-cloud-bus.version>2.2.1.RELEASE</spring-cloud-bus.version>
<spring-cloud-function.version>3.0.3.RELEASE</spring-cloud-function.version>
<spring-cloud-sleuth.version>2.2.2.RELEASE</spring-cloud-sleuth.version>
<spring-cloud-gateway.version>2.2.2.RELEASE</spring-cloud-gateway.version>
<spring-cloud-gcp.version>1.2.2.RELEASE</spring-cloud-gcp.version>
<spring-cloud-cloudfoundry.version>2.2.1.RELEASE</spring-cloud-cloudfoundry.version>
<main.basedir>${basedir}/../..</main.basedir>
<spring-cloud-circuitbreaker.version>1.0.2.RELEASE</spring-cloud-circuitbreaker.version>
<spring-cloud-aws.version>2.2.1.RELEASE</spring-cloud-aws.version>
<spring-cloud-cli.version>2.2.1.RELEASE</spring-cloud-cli.version>
</properties>
这告诉我作为一个例子,我可以使用 2.2.2.RELEASE 版本的 open feign,因为我的项目的 Spring Boot 版本是 2.2.5
如果需要,这些 pom 文件都可以在 maven Central 上进行挖掘: