Tahtoh
Tahtoh

Reputation: 57

Dependency table for spring boot 2.4.3

I have a difficulty defining what dependencies versions are compatible with each other.

In my case i have this

enter image description here

I don't know for the spring boot 2.4.3 what versions of the dependencies below go with it or the cloud version to 2020.0.1.

How can i fix this for example i want to migrate the spring boot and spring cloud to its latest versions.

Upvotes: 0

Views: 4423

Answers (2)

Aidos Rustem
Aidos Rustem

Reputation: 203

It might be because there are collisions between dependencies included from the start and your explicitly defined dependencies. For example, take this dependency: spring-cloud-contract

Your version: 2.1.5

2020.0.1 Spring cloud's supported version: 3.0.1 (check this link mentioned by @Jonatan)

Try to exclude built-in dependencies that you have explicitly defined. For Maven it would be:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2020.0.1</version>
            <type>pom</type>
            <scope>import</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-contract-verifier</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</dependencyManagement>

But that might not work because not all libraries are backward compatible. I would suggest using default libraries provided by spring cloud and remove explicit dependencies.

Upvotes: 1

Jonatan Ivanov
Jonatan Ivanov

Reputation: 6863

It is a good rule of thumb to not define the versions yourself but use BOMs and let them define the versions for you:

In order to find out which BOMs to use, you can use this compatibility matrix or the endpoint that @spencergibb mentioned: https://start.spring.io/actuator/info.

If you want to use a Spring Project that is not in the BOM, most probably that Spring Project is not supported (e.g.: Netflix libraries by latest Spring Cloud as @spencergibb mentioned).

Update: here's a Gradle example but you can generate a whole project using Spring Initializer:

plugins {
  id 'org.springframework.boot' version '2.4.3'
  id 'io.spring.dependency-management' version '1.0.11.RELEASE'
  id 'java'
}

repositories {
  mavenCentral()
}
dependencyManagement {
  imports {
    mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2020.0.1'
  }
}
dependencies {
  implementation 'org.springframework.boot:spring-boot-starter-web'
  implementation 'org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j'
}

Upvotes: 4

Related Questions