web-dev-qa-db-fra.com

Existe-t-il une matrice de compatibilité de Spring-boot et Spring-cloud?

Je me demande s'il existe une matrice de compatibilité entre Springboot et Springcloud?

J'ai créé un projet simple sur STS et je rencontre des problèmes de compatibilité.

   <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>

Avoir une bonne vue des versions prises en charge de Springboot et Springcloud simplifiera les choses.

J'ai observé un problème ouvert qui parle de ce besoin - https://github.com/spring-cloud/spring-cloud-build/issues/4

La communauté a-t-elle une approche sur la façon dont elle choisit de commencer une combinaison de versions spécifique lorsqu'elle se lance dans un projet SpringCloud?

Edit: Ajout d'une autre instance d'un tel problème que j'ai rencontré depuis hier

extraits de 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>

Il n'y a aucune erreur maven dans l'utilisation de 1.5.2.RELEASE avec Camden.SR5, mais lorsque l'application démarre, elle lance la 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

Utiliser 1.4.5 avec Brixton.SR6 est une combinaison qui fonctionne généralement bien pour moi.

21
Manglu

Si vous suivez le démarrage rapide sur http://projects.spring.io/spring-cloud/ il vous indique les versions compatibles. Le train de versions de Camden n'est pas compatible avec Spring Boot 1.5.x

Vous pouvez également lire les notes de publication pour chaque version qui note les versions de composants compatibles:

https://github.com/spring-projects/spring-cloud/wiki/Spring-Cloud-Camden-Release-Notes :

Spring Cloud Camden s'appuie sur Spring Boot 1.4.x.

14
Strelok

Oui, il y a: http://start.spring.io/actuator/info

Il comprend plus de bibliothèques que Spring-Cloud, mais pas chacune d'entre elles.

11
Stefanos Kalantzis