Статьи

Переопределить версию Spring Framework в приложении Spring Boot, созданном с помощью Gradle

Если вы хотите использовать или просто проверить новейшую версию Spring с Spring Boot, но текущая версия Spring Boot зависит от более старой версии Spring, вам необходимо немного изменить конфигурацию сборки Gradle.

Например, на момент написания этого блога текущие версии были Spring 4.2.1 и Spring Boot 1.2.5. Spring Boot 1.2.5 зависит от Spring 4.1.7. Так что же делать, чтобы использовать Spring 4.2.1 с Spring Boot 1.2.5? Взгляните на два способа достижения этого: с и без Spring IO Platform.

Spring IO Platform

Идея Spring IO Platform заключается в предоставлении версий библиотек, которые, как известно, работают вместе с помощью управления зависимостями Maven. Основная причина, по которой вы должны рассмотреть Spring IO Platform для своего проекта, заключается в том, что вам не нужно заботиться о зависимых версиях проектов Spring вместе с их зависимостями.

Платформа также поддерживается Gradle через плагин управления зависимостями — плагин, который обеспечивает функциональность управления зависимостями, подобную Maven. Чтобы использовать его, вы можете просто импортировать BOM платформы в файл build.gradle вашего приложения:

1
2
3
4
5
dependencyManagement {
    imports {
        mavenBom 'io.spring.platform:platform-bom:1.1.3.RELEASE'
    }
}

Если вам удастся сгенерировать проекты с помощью Spring Initializr, вы заметите, что плагин управления зависимостями Gradle уже включен. Осталось добавить конфигурацию управления зависимостями, импортировать BOM как показано выше, и добавить зависимости без версий — так как версии предоставляются BOM .

Переопределение версий зависимостей

Переопределение версии зависимости так же просто, как изменение значения свойства версии зависимости, которое можно найти в BOM и ее предках здесь и здесь .

Свойства можно изменить в файле gradle.properties :

1
spring.version = '4.2.1.RELEASE'

или в файле build.gradle :

1
ext['spring.version'] = '4.2.1.RELEASE'

Вышеуказанное свойство определяет версию фреймворка Spring. Переопределение позволяет настроить версию Spring в приложении Spring Boot.

Предполагая, что у вас установлен Gradle 2.6, выполните задачу dependencyInsight :

1
gradlew dependencyInsight --dependency org.springframework

Как вы можете видеть ниже, Spring 4.1.7, требуемый Spring Boot 1.2.5, был преобразован в Spring 4.2.1:

01
02
03
04
05
06
07
08
09
10
11
12
[...]
 
org.springframework:spring-webmvc:4.1.7.RELEASE -> 4.2.1.RELEASE
\--- org.springframework.boot:spring-boot-starter-web:1.2.5.RELEASE
     \--- compile                
 
 
org.springframework:spring-webmvc:4.1.7.RELEASE -> 4.2.1.RELEASE
\--- org.springframework.boot:spring-boot-starter-web:1.2.5.RELEASE
     \--- compile                
 
[...]

Переопределить версию Spring без платформы Spring IO

Если вы не знакомы с Платформой или не желаете ее использовать, вы можете выбрать простой обходной путь и заменить версию среды Spring на следующую конфигурацию:

1
2
3
4
5
6
7
configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        if (details.requested.group == 'org.springframework') {
            details.useVersion "4.2.1.RELEASE"
        }
    }
}