Maven - wersja Spring Boot Starter
Nie jestem ekspertem od wersji rozruszników sprężynowych i napotkałem problem. Próbuję zbudować mój projekt za pomocą tego wiosennego startera do rozruchu . I potrzebuję wersji wbudowanych bibliotek 5.2.0, jak jest to napisane w opisie tego pliku jar. Ale kiedy dodałem tę zależność do mojego projektu, stwierdziłem, że wersje wbudowanych bibliotek są inne, niż się spodziewałem. Moje wtyczki maven pokazują, że wersje 5.1.6 i mój kod nie kompilują się, ponieważ niektóre klasy zależą od metod z modułu 5.2.0.
I jest jeszcze jedna rzecz. W innym projekcie dodałem tę samą zależność. Ale jest ok, wersje są takie same z opisem z repozytorium maven. Istnieje różnica między tymi dwoma projektami. Jeden z nich z wersją spring-boot 2.1.9 (która się nie kompiluje), a drugi - 2.3.4 (który działa dobrze). A kiedy sprawdziłem wersje zawierające w bibliotekach startowych poprzez artefactId w pom - są ok i są w porządku 5.2.0.
Tutaj 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>
Próbowałem usunąć repozytorium m2 ze wszystkimi zależnościami maven, a następnie pobrać ponownie, ale nadal mam problem. Popełniłem błąd w pom.xml? Może coś jest nie tak z moim IntelliJ?
Wersje zależności w pom
Niewłaściwe wersje wtyczki
Poprawne wersje wtyczki
Odpowiedzi
Spring Boot zarządza kilkoma wersjami zależności, dzięki czemu możemy zapewnić, że są one ze sobą zgodne.
Spójrz na ten plik pom.xml, aby zobaczyć, które wersje zależności są zarządzane przez Spring Boot 2.3.4.RELEASE. Możesz zmienić numer wersji i zobaczyć zarządzane zależności w tej wersji.
https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/2.3.4.RELEASE/spring-boot-dependencies-2.3.4.RELEASE.pom
Korzyści:
- Jeśli chcesz użyć zależności spoza listy zależności, nie musisz określać wersji w swoim pom.xml. Lub sprawdź, czy istnieje oficjalny rozruch sprężynowy dla tej zależności. Jeśli istnieje, po prostu użyj zależności spring-boot-starter. Ponownie nie ma potrzeby określania wersji.
- Spring wyciągnie zależność, która działa dobrze ze wszystkimi innymi bibliotekami, aby nie uzyskać błędu zgodności (czasu wykonania lub kompilacji)
- Po zaktualizowaniu wersji Spring Boot wszystkie zarządzane zależności zostaną zaktualizowane. Zachowana jest także kompatybilność.
Jak rozwiązać problem:
W pliku pom.xml nie musisz określać wersji dla spring-boot-starter-oauth2-resource-server. Ta biblioteka jest zarządzana przez Spring Boot. Wygląda na to, że określasz wersję 2.2.0, która nie jest kompatybilna z wersją 2.1.9 Twojego sprężynowego rozruchu.