Maven — версия Spring Boot Starter

#java #spring-boot #maven #intellij-idea

#java #spring-boot #maven #intellij-идея

Вопрос:

Я не эксперт в версиях spring boot starters и столкнулся с проблемой. Я пытаюсь создать свой проект с помощью этого spring boot starter. И мне нужно, чтобы версия встроенных библиотек была 5.2.0, как указано в описании этого файла jar. Но когда я добавил эту зависимость в свой проект, я обнаружил, что версии встроенных библиотек отличаются от ожидаемых. Мои плагины maven показывают, что версии 5.1.6 и мой код не компилируются, потому что некоторые классы зависят от методов из модуля 5.2.0.

И есть еще одна вещь. В другом проекте я добавил ту же зависимость. Но все в порядке, версии совпадают с описанием из репозитория maven. Между этими двумя проектами есть разница. Один из них с версией spring-boot 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
версии в pom

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

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

Комментарии:

1. Предполагается, что вы должны расширить родительский файл Spring boot, или, если вы не можете (потому что вы уже расширили свой собственный родительский файл), вам следует импортировать его. baeldung.com/spring-boot-dependency-management-custom-parent Spring будет управлять версиями для вас. Тот факт, который вы указываете <version>2.2.0.RELEASE</version> явно, в основном неверен

Ответ №1:

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 извлечет зависимость, которая хорошо работает со всеми другими библиотеками, так что вы не получите ошибку совместимости (время выполнения или время компиляции)
  • При обновлении версии spring boot все управляемые зависимости будут обновлены. А также поддерживается совместимость.

Как решить вашу проблему:

В вашем pom.xml , вам не нужно указывать версию для spring-boot-starter-oauth2-resource-server . Эта библиотека управляется spring boot. Похоже, вы указываете версию 2.2.0, которая несовместима с вашей версией spring boot 2.1.9.

Комментарии:

1. спасибо за ваш ответ! Вы определенно правы насчет версии spring-boot. Я меняю свою версию spring-boot на 2.2.0, и теперь все в порядке.