Maven - версия Spring Boot Starter

Sep 26 2020

Я не эксперт по версиям стартеров весенней загрузки и столкнулся с проблемой. Я пытаюсь создать свой проект с помощью этого стартера весенней загрузки . И мне нужно, чтобы версия встроенных библиотек была 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

Неправильные версии в плагине

Правильные версии в плагине

Ответы

2 gtiwari333 Sep 26 2020 at 02:38

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.