首页 > 解决方案 > Maven - Spring Boot Starter 版本

问题描述

我不是关于弹簧靴启动器版本的专家,并且遇到了问题。我正在尝试使用这个 spring boot starter构建我的项目。我需要嵌入式库版本为 5.2.0,正如它在这个 jar 文件的描述中所说的那样。但是当我将此依赖项添加到我的项目中时,我发现嵌入式库版本与我预期的不同。我的 maven 插件显示版本 5.1.6 和我的代码无法编译,因为某些类依赖于 5.2.0 模块中的方法。

还有一件事。在另一个项目中,我添加了相同的依赖项。但没关系,版本与来自 maven 存储库的描述相同。这两个项目有区别。其中一个带有 spring-boot 版本 2.1.9(不能编译)和另一个 - 2.3.4(whihk 很好用)。当我通过 pom 中的 artefactId 检查包含到启动器库中的版本时 - 它们没问题,而且是 5.2.0。

这里 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>

我试图删除所有 maven 依赖项的 m2 repo,然后再次下载,但我仍然有问题。我在 pom.xml 中犯了一个错误?也许我的 IntelliJ 有问题?

pom中的依赖版本 pom中的版本

插件版本错误 插件版本错误

插件中的正确版本 插件中的正确版本

标签: javaspring-bootmavenintellij-idea

解决方案


Spring Boot 管理多个依赖版本,以便我们确保它们相互兼容。

查看这个 pom.xml 文件,了解 Spring Boot 2.3.4.RELEASE 管理的依赖版本。您可以更改版本号并查看该版本中的托管依赖项。

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

好处:

  • 如果要使用依赖项列表之外的依赖项,则无需在 pom.xml 中指定版本。或者检查该依赖项的官方 spring-boot-starter 是否存在。如果存在,只需使用 spring-boot-starter 依赖项。再次不需要指定版本。
  • Spring 将拉取与所有其他库一起工作的依赖项,这样您就不会遇到兼容性(运行时或编译时)错误
  • 当您升级 Spring Boot 的版本时,所有托管的依赖项都将得到更新。并且还保持了兼容性。

如何解决您的问题:

在您的 pom.xml 中,您无需指定spring-boot-starter-oauth2-resource-server. 该库由 spring boot 管理。看起来您指定的版本 2.2.0 与您的 Spring Boot 版本 2.1.9 不兼容。


推荐阅读