Maven - Version von Spring Boot Starter
Ich bin kein Experte für Versionen von Spring Boot Startern und habe Probleme. Ich versuche mein Projekt mit diesem Spring Boot Starter aufzubauen . Und ich brauche die Version der eingebetteten Bibliotheken, um 5.2.0 zu sein, wie es in der Beschreibung dieser JAR-Datei steht. Als ich diese Abhängigkeit in mein Projekt einfügte, stellte ich fest, dass die Versionen der eingebetteten Bibliotheken anders sind als erwartet. Meine Maven-Plugins zeigen, dass die Versionen 5.1.6 und mein Code nicht kompiliert werden können, da einige Klassen von Methoden aus dem 5.2.0-Modul abhängen.
Und da ist noch eine Sache. In einem anderen Projekt habe ich die gleiche Abhängigkeit hinzugefügt. Aber es ist in Ordnung, die Versionen sind die gleichen mit der Beschreibung von Maven Repositoty. Es gibt einen Unterschied zwischen diesen beiden Projekten. Eine davon mit Spring-Boot-Version 2.1.9 (die nicht kompiliert wird) und eine andere - 2.3.4 (was gut funktioniert). Und als ich Versionen von Containern in Starterbibliotheken über artefactId in pom überprüfte, waren sie in Ordnung und 5.2.0.
Hier 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>
Ich habe versucht, m2 repo mit allen Maven-Abhängigkeiten zu löschen und dann erneut herunterzuladen, aber ich habe immer noch ein Problem. Ich habe einen Fehler in pom.xml gemacht? Vielleicht stimmt etwas mit meinem IntelliJ nicht?
Versionen der Abhängigkeit in pom
Falsche Versionen im Plugin
Richtige Versionen im Plugin
Antworten
Spring Boot verwaltet mehrere Abhängigkeitsversionen, damit wir sicherstellen können, dass sie miteinander kompatibel sind.
Sehen Sie sich diese Datei pom.xml an, um zu sehen, welche Abhängigkeitsversionen von Spring Boot 2.3.4.RELEASE verwaltet werden. Sie können die Versionsnummer ändern und die verwalteten Abhängigkeiten in dieser Version anzeigen.
https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/2.3.4.RELEASE/spring-boot-dependencies-2.3.4.RELEASE.pom
Leistungen:
- Wenn Sie eine Abhängigkeit aus der Abhängigkeitsliste verwenden möchten, müssen Sie die Version in Ihrer pom.xml nicht angeben. Oder prüfen Sie, ob ein offizieller Spring-Boot-Starter für diese Abhängigkeit vorhanden ist. Wenn es existiert, verwenden Sie einfach die Spring-Boot-Starter-Abhängigkeit. Auch hier muss die Version nicht angegeben werden.
- Spring zieht die Abhängigkeit, die mit allen anderen Bibliotheken gut funktioniert, so dass Sie keinen Kompatibilitätsfehler (Laufzeit oder Kompilierungszeit) erhalten
- Wenn Sie die Version von Spring Boot aktualisieren, werden alle verwalteten Abhängigkeiten aktualisiert. Und auch die Kompatibilität bleibt erhalten.
So lösen Sie Ihr Problem:
In Ihrer pom.xml müssen Sie die Version für nicht angeben spring-boot-starter-oauth2-resource-server. Diese Bibliothek wird von Spring Boot verwaltet. Anscheinend geben Sie Version 2.2.0 an, die nicht mit Ihrer Spring Boot-Version 2.1.9 kompatibel ist.