Maven - versione di Spring Boot Starter
Non sono un esperto di versioni di dispositivi di avviamento a molla e ho riscontrato problemi. Sto provando a costruire il mio progetto con questo avvio di avvio primaverile . E ho bisogno che la versione delle librerie incorporate sia 5.2.0 come dice nella descrizione di questo file jar. Ma quando ho aggiunto questa dipendenza nel mio progetto, ho scoperto che le versioni delle librerie incorporate sono diverse da quelle che mi aspettavo. I miei plugin esperti mostrano che le versioni 5.1.6 e il mio codice non vengono compilati perché alcune classi dipendono dai metodi del modulo 5.2.0.
E c'è un'altra cosa. In un altro progetto ho aggiunto la stessa dipendenza. Ma va bene, le versioni sono le stesse con la descrizione di Maven repositoty. C'è differenza tra questi due progetti. Uno di loro con la versione 2.1.9 di avvio a molla (che non si compila) e un altro - 2.3.4 (che funziona bene). E quando ho controllato le versioni di contenimento nelle librerie di avvio tramite artefactId in pom, sono ok e 5.2.0.
Qui 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>
Ho provato a eliminare il repository m2 con tutte le dipendenze di Maven e quindi a scaricare di nuovo, ma ho ancora problemi. Ho fatto un errore in pom.xml? Forse c'è qualcosa che non va con il mio IntelliJ?
Versioni di dipendenza in pom
Versioni sbagliate nel plugin
Versioni corrette nel plugin
Risposte
Spring Boot gestisce diverse versioni delle dipendenze in modo che possiamo assicurarci che siano compatibili tra loro.
Guarda questo file pom.xml per vedere quale versione delle dipendenze è gestita da Spring Boot 2.3.4.RELEASE. È possibile modificare il numero di versione e visualizzare le dipendenze gestite in quella versione.
https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/2.3.4.RELEASE/spring-boot-dependencies-2.3.4.RELEASE.pom
Benefici:
- Se vuoi usare una dipendenza fuori dall'elenco delle dipendenze, non è necessario specificare la versione nel tuo pom.xml. Oppure controlla se esiste uno spring-boot-starter ufficiale per quella dipendenza. Se esiste, usa semplicemente la dipendenza spring-boot-starter. Anche in questo caso non è necessario specificare la versione.
- Spring estrarrà la dipendenza che funziona bene con tutte le altre librerie in modo da non ottenere errori di compatibilità (runtime o compilazione)
- Quando aggiorni la versione di Spring Boot, tutte le dipendenze gestite verranno aggiornate. E anche la compatibilità viene mantenuta.
Come risolvere il tuo problema:
Nel tuo pom.xml, non è necessario specificare la versione per spring-boot-starter-oauth2-resource-server. Questa libreria è gestita da Spring Boot. Sembra che tu stia specificando la versione 2.2.0 che non è compatibile con la tua versione 2.1.9 di avvio primaverile.