Maven - версия Spring Boot Starter
Я не эксперт по версиям стартеров весенней загрузки и столкнулся с проблемой. Я пытаюсь создать свой проект с помощью этого стартера весенней загрузки . И мне нужно, чтобы версия встроенных библиотек была 5.2.0, как говорится в описании этого файла jar. Но когда я добавил эту зависимость в свой проект, я обнаружил, что версии встроенных библиотек отличаются от ожидаемых. Мои плагины maven показывают, что версии 5.1.6 и мой код не компилируются, потому что некоторые классы зависят от методов из модуля 5.2.0.
И еще кое-что. В другом проекте я добавил такую же зависимость. Но ничего страшного, версии совпадают с описанием из репозитория maven. Между этими двумя проектами есть разница. Один из них с версией весенней загрузки 2.1.9 (которая не компилируется), а другой - 2.3.4 (которая хорошо работает). И когда я проверил версии содержания в стартовых библиотеках через artefactId в pom - они в порядке и 5.2.0.
Вот pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>adapters</artifactId>
<groupId>com.alarislabs</groupId>
<version>0.0.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>security</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
</dependencies>
Я попытался удалить репо m2 со всеми зависимостями maven, а затем загрузить его снова, но у меня все еще есть проблема. Я сделал ошибку в pom.xml? Может, с моим IntelliJ что-то не так?
Версии зависимости в pom
Неправильные версии в плагине
Правильные версии в плагине
Ответы
Spring Boot управляет несколькими версиями зависимостей, чтобы мы могли гарантировать их совместимость друг с другом.
Посмотрите этот файл pom.xml, чтобы узнать, какая версия зависимостей управляется Spring Boot 2.3.4.RELEASE. Вы можете изменить номер версии и увидеть управляемые зависимости в этой версии.
https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/2.3.4.RELEASE/spring-boot-dependencies-2.3.4.RELEASE.pom
Льготы:
- Если вы хотите использовать зависимость вне списка зависимостей, вам не нужно указывать версию в вашем pom.xml. Или проверьте, существует ли официальный Spring-boot-starter для этой зависимости. Если он существует, просто используйте зависимость spring-boot-starter. Опять же версию указывать не нужно.
- Spring извлечет зависимость, которая хорошо работает со всеми другими библиотеками, поэтому вы не получите ошибку совместимости (во время выполнения или во время компиляции).
- Когда вы обновляете версию весенней загрузки, все управляемые зависимости будут обновлены. А также совместимость сохраняется.
Как решить вашу проблему:
В вашем pom.xml вам не нужно указывать версию для spring-boot-starter-oauth2-resource-server. Эта библиотека управляется весенней загрузкой. Похоже, вы указываете версию 2.2.0, которая несовместима с версией весенней загрузки 2.1.9.