【问题标题】:Maven - version of Spring Boot StarterMaven - Spring Boot Starter 版本
【发布时间】:2021-01-12 03:32:42
【问题描述】:

我不是 Spring Boot Starters 版本方面的专家,并且遇到了问题。我正在尝试使用this 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 中的依赖版本

插件版本错误

插件中的正确版本

【问题讨论】:

  • 你应该扩展 Spring boot 父 pom,或者如果你不能(因为你已经扩展了你自己的 parent)那么你应该导入它。 baeldung.com/spring-boot-dependency-management-custom-parent Spring 将为您管理版本。您明确指定 &lt;version&gt;2.2.0.RELEASE&lt;/version&gt; 的事实基本上是错误的

标签: java spring-boot maven intellij-idea


【解决方案1】:

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 不兼容。

【讨论】:

  • 感谢您的回答!您对 spring-boot 版本绝对正确。我将 spring-boot 版本更改为 2.2.0,现在一切正常。
猜你喜欢
  • 2021-07-08
  • 1970-01-01
  • 2017-08-10
  • 2019-12-26
  • 2014-04-07
  • 2017-11-30
  • 2018-08-06
  • 2016-01-29
  • 1970-01-01
相关资源
最近更新 更多