有Spring-boot和Spring-cloud的兼容性矩阵吗?

问题描述 投票:0回答:5

我想知道Springboot和Springcloud之间是否存在兼容性矩阵?

我在 STS 上创建了一个简单的项目,但遇到了兼容性问题。

   <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>


<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Camden.SR5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

了解 Springboot 和 Springcloud 的受支持版本将使事情变得更简单。

我确实观察到一个讨论这种需求的开放问题 - https://github.com/spring-cloud/spring-cloud-build/issues/43

社区在开始 SpringCloud 项目时是否有关于如何选择开始特定版本组合的方法?

编辑:添加我昨天以来遇到的此类问题的另一个实例

pom.xml 中的片段

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
         <version>1.5.2.RELEASE</version>
        <!--<version>1.5.2.RELEASE</version> -->
        <relativePath /> <!-- lookup parent from repository -->
    </parent>


    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <!-- <version>Camden.SR6</version -->
                <!-- <version>Brixton.SR5</version> -->
                <!--  <version>Camden.SR6</version> -->
                <version>Camden.SR5</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

将 1.5.2.RELEASE 与 Camden.SR5 一起使用没有 Maven 错误,但是当应用程序启动时它会抛出 NoClassDefFoundError。

2017-03-28 09:51:15.148 ERROR 15808 --- [           main] o.s.boot.SpringApplication               : Application startup failed

java.lang.NoClassDefFoundError: org/springframework/cloud/context/named/NamedContextFactory$Specification
    at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_112]
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[na:1.8.0_112]
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_112]
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) ~[na:1.8.0_112]
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73) ~[na:1.8.0_112]
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368) ~[na:1.8.0_112]
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362) ~[na:1.8.0_112]
    at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_112]
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361) ~[na:1.8.0_112]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_112]
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_112]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_112]
    at org.springframework.cloud.netflix.feign.FeignClientsRegistrar.registerClientConfiguration(FeignClientsRegistrar.java:367) ~[spring-cloud-netflix-core-1.2.5.RELEASE.jar:1.2.5.RELEASE]
    at org.springframework.cloud.netflix.feign.FeignClientsRegistrar.registerDefaultConfiguration(FeignClientsRegistrar.java:104) ~[spring-cloud-netflix-core-1.2.5.RELEASE.jar:1.2.5.RELEASE]
    at org.springframework.cloud.netflix.feign.FeignClientsRegistrar.registerBeanDefinitions(FeignClientsRegistrar.java:87) ~[spring-cloud-netflix-core-1.2.5.RELEASE.jar:1.2.5.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:352) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:143) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:116) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:320) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:228) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:270) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:93) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:686) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:524) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1162) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1151) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at com.forecastessentials.school.SchoolUniformForecastApplication.main(SchoolUniformForecastApplication.java:12) [classes/:na]
Caused by: java.lang.ClassNotFoundException: org.springframework.cloud.context.named.NamedContextFactory$Specification
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_112]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_112]
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_112]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_112]
    ... 31 common frames omitted

将 1.4.5 与 Brixton.SR6 结合使用通常对我来说效果很好。

spring spring-boot version compatibility spring-cloud
5个回答
73
投票

2023年1月更新

Spring Cloud 发布火车 Spring Boot 兼容性

兼容性矩阵
春云 春季启动
2022.0.x 又名 Kilburn 3.0.x
2021.0.3+ 又名禧年 2.6.x, 2.7.x
2021.0.x 又名银禧 2.6.x
2020.0.3+ 又名伊尔福德 2.4.x, 2.5.x
2020.0.x 又名伊尔福德 2.4.x
⚠ Spring Cloud以下版本已全部停产,不再支持
春云 春季启动
霍克斯顿.SR5+ 2.2.x, 2.3.x
霍克斯顿 2.2.x
格林威治 2.1.x
芬奇利 2.0.x
埃奇韦尔 1.5.x
达尔斯顿 1.5.x
卡姆登.SR5+ 1.4.x, 1.5.x
卡姆登 1.4.x
布里克斯顿 1.3.x, 1.4.x
天使 1.2.x
⚠ 以下是 Spring Cloud(预览版)的里程碑。
春云 春季启动
2022.0.0-M4 3.0.0-M4
2022.0.0-M3 3.0.0-M3
2022.0.0-M2 3.0.0-M2
2022.0.0-M1 3.0.0-M1
2021.0.0-M2 2.6.0-M3

来源:

  1. Spring Cloud项目页面
  2. Spring Cloud 2021.0.0-M2(代号Jubilee)可用
  3. Spring Cloud 2021.0.0(代号Jubilee)已发布
  4. Spring Cloud 路线图和 EOL 公告
  5. 2022.0.0-M1
    PRE
    参考文档
  6. Spring Cloud 2022.0.0-M2(代号Kilburn)已发布
  7. Spring Cloud 2022.0.0-M3(代号Kilburn)已发布

44
投票

这里是 release train Spring Boot 兼容性表。在表格下方,有一条注释表明 Camden 发布序列基于 Spring Boot 1.4.x 构建,但也使用 1.5.x 进行了测试

您还可以阅读每个版本的发行说明,其中记录了兼容的组件版本:

Spring Cloud Camden 基于 Spring Boot 1.4.x.

但后来:

添加 Boot 1.5 兼容性并破坏 Boot 1.3 兼容性


23
投票

是的,有:http://start.spring.io/actuator/info

它包含的库不仅仅是 spring-cloud,但不是每个库都包含。


13
投票

2023,找到最新的匹配版本的Spring Boot和Spring Cloud仍然很乏味......这里有一个过程:

  1. https://spring.io/projects/spring-cloud

    Release Trains
    表中查找兼容性矩阵,它显示了 Spring Boot 和 Spring Cloud Release Train 版本匹配。截至 2022-12-06 发布列车:

  2. 点击“Release Train”栏中的链接(屏幕截图:在左侧)以访问 Spring Cloud 发行说明,其中提到了最新的“Release Train”版本。
    例如:“

    Hoxton
    ==>
    Hoxton.SR12
    ”。

    或者:
    https://github.com/spring-cloud/spring-cloud-release/tags中找到最新匹配的Spring Cloud Release Train版本

  3. 从“引导版本”列中选择值并在 Spring Boot 版本中查找最高匹配版本,此处:https://github.com/spring-projects/spring-boot/releases 或(更快)这里:https://github.com/spring-projects/spring-boot/tags
    .

    示例继续:“==> 
    v2.3.12.RELEASE

    ”.

另一个信息来源是 Spring 博客类别“发布”:https://spring.io/blog/category/releases

,但恕我直言,这有点......令人困惑。

2
投票

我找到了一种方法来获得 spring boot 和 spring cloud 之间的确切版本兼容性。

"� 7621 �只需访问此 URL:https://start.spring.io/actuator/info

\n"
spring-cloud": {
"Hoxton.SR12": "Spring Boot >=2.2.0.RELEASE and <2.4.0.M1",
"2020.0.5": "Spring Boot >=2.4.0.M1 and <2.6.0-M1",
"2021.0.0-M1": "Spring Boot >=2.6.0-M1 and <2.6.0-M3",
"2021.0.0-M3": "Spring Boot >=2.6.0-M3 and <2.6.0-RC1",
"2021.0.0-RC1": "Spring Boot >=2.6.0-RC1 and <2.6.1",
"2021.0.1": "Spring Boot >=2.6.1 and <2.6.5-SNAPSHOT",
"2021.0.2-SNAPSHOT": "Spring Boot >=2.6.5-SNAPSHOT and <3.0.0-M1",
"2022.0.0-M1": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
},
© www.soinside.com 2019 - 2024. All rights reserved.