Maven - versão do Spring Boot Starter

Sep 26 2020

Não sou um especialista em versões de iniciadores de inicialização com mola e tenho enfrentado problemas. Estou tentando construir meu projeto com este iniciador de inicialização de primavera . E preciso que a versão das bibliotecas incorporadas seja 5.2.0, conforme diz na descrição deste arquivo jar. Mas quando adicionei essa dependência ao meu projeto, descobri que as versões das bibliotecas incorporadas são diferentes do que eu esperava. Meus plug-ins maven mostram que as versões 5.1.6 e meu código não compilam porque algumas classes dependem de métodos do módulo 5.2.0.

E tem mais uma coisa. Em outro projeto, adicionei a mesma dependência. Mas está tudo bem, as versões são as mesmas com a descrição do repositório maven. Há diferença entre esses dois projetos. Um deles com spring-boot versão 2.1.9 (que não compila) e outro - 2.3.4 (que funciona bem). E quando eu verifiquei as versões do container nas bibliotecas iniciais via artefactId no pom - elas estão ok e 5.2.0.

Aqui 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>

Eu tentei excluir repo m2 com todas as dependências do maven e, em seguida, baixe novamente, mas ainda tenho problemas. Eu cometi um erro no pom.xml? Talvez haja algo errado com meu IntelliJ?

Versões de dependência em pom

Versões erradas no plugin

Versões corretas no plugin

Respostas

2 gtiwari333 Sep 26 2020 at 02:38

O Spring Boot gerencia várias versões de dependências para que possamos garantir que sejam compatíveis entre si.

Observe este arquivo pom.xml para ver quais versões de dependências são gerenciadas pelo Spring Boot 2.3.4.RELEASE. Você pode alterar o número da versão e ver as dependências gerenciadas nessa versão.

https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/2.3.4.RELEASE/spring-boot-dependencies-2.3.4.RELEASE.pom

Benefícios:

  • Se você deseja usar uma dependência fora da lista de dependências, não é necessário especificar a versão em seu pom.xml. Ou verifique se existe um iniciador de inicialização com mola oficial para essa dependência. Se existir, apenas use a dependência spring-boot-starter. Novamente, não há necessidade de especificar a versão.
  • Spring irá puxar a dependência que funciona bem com todas as outras bibliotecas para que você não obtenha erro de compatibilidade (tempo de execução ou tempo de compilação)
  • Quando você atualiza a versão do spring boot, todas as dependências gerenciadas são atualizadas. E também a compatibilidade é mantida.

Como resolver seu problema:

No seu pom.xml, você não precisa especificar a versão do spring-boot-starter-oauth2-resource-server. Esta biblioteca é gerenciada por spring boot. Parece que você está especificando a versão 2.2.0, que não é compatível com a versão 2.1.9 do Spring Boot.