Если вы хотите использовать или просто проверить новейшую версию 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" } } } |