Marcel Overdijk
Marcel Overdijk

Reputation: 11467

Is there a simple way to use a different Spring version?

I want to use latest Spring 4.1.x snapshot in my Spring Boot project.

Is there a simple way to override the version of all Spring dependencies, or should I include all required Spring dependencies with it's desired version manually?

Reason is I want experiment with Spring 4.1 @JsonView annotation in REST services.

Upvotes: 6

Views: 15739

Answers (3)

Andy Wilkinson
Andy Wilkinson

Reputation: 116341

If you're using Maven with spring-boot-starter-parent as the parent, you can override the spring.version property in your pom to change the version of Spring that you're using:

<properties>
    <spring.version>4.1.0.BUILD-SNAPSHOT</spring.version>
</properties>

If you're using Gradle, you can achieve the same effect by using a resolution strategy to override the version of everything with the org.springframework group id:

configurations.all {
    resolutionStrategy {
        eachDependency {
            if (it.requested.group == 'org.springframework') {
                it.useVersion '4.1.0.BUILD-SNAPSHOT'
            }
        }
    }
}

Upvotes: 10

Marcel Overdijk
Marcel Overdijk

Reputation: 11467

I once again needed this and previous block doesn't work anymore, causing already dependencies to be failed.

Anyway this works:

configurations.all {
    resolutionStrategy {
        eachDependency { DependencyResolveDetails details ->
            if (details.requested.group == "org.springframework") {
                details.useVersion "4.1.0.RC1"
            }
        }
    }
}

Upvotes: 2

Steve
Steve

Reputation: 9490

Given that you're using Spring Boot, I'm guessing that you must be using either Maven or Gradle, but you don't say which. For Maven, you have a couple of things you might be able to do.

First, you could have a go at just forcing the Spring version in your pom.xml:

<properties>
    <spring.version>4.1.0.BUILD-SNAPSHOT</spring.version>
</properties>

That ought to override the property which is defined in the spring-boot-dependencies project.

For more fine-grained control, use dependency management:

<dependencyManagement>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.1.0.BUILD-SNAPSHOT</version>
    </dependency>
</dependencyManagement>

Upvotes: 1

Related Questions