Maven - versione di Spring Boot Starter

Sep 26 2020

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

2 gtiwari333 Sep 26 2020 at 02:38

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.