#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?
Комментарии:
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. Вы можете изменить номер версии и просмотреть управляемые зависимости в этой версии.
Преимущества:
- Если вы хотите использовать зависимость из списка зависимостей, вам не нужно указывать версию в своем 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, и теперь все в порядке.