导入 BOM pom 时如何覆盖 Spring Boot 的版本号?

2024-03-18

如何覆盖 Spring Boot 导入的版本号,而不需要在依赖管理部分手动设置每个工件?

<properties>
    <spring.boot.version>1.5.7.RELEASE</spring.boot.version>
    <jackson.version>2.9.1</jackson.version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring.boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson</groupId>
            <artifactId>jackson-bom</artifactId>
            <version>${jackson.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

然而,当我跑步时

mvn dependency:tree "-Dincludes=com.fasterxml.jackson.*" -Dverbose

输出

[INFO] ------------------------------------------------------------------------
[INFO] Building dpt-domain-core 1.0.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ dpt-domain-core ---
[INFO] net.initech.dpt:dpt-domain-core:jar:1.0.0
[INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.8.0:compile
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.8.10:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.8.10:compile
[INFO] |  +- (com.fasterxml.jackson.core:jackson-annotations:jar:2.8.0:compile - omitted for duplicate)
[INFO] |  \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.10:compile - omitted for duplicate)
[INFO] \- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.8.10:compile
[INFO]    +- (com.fasterxml.jackson.core:jackson-annotations:jar:2.8.0:compile - omitted for duplicate)
[INFO]    +- (com.fasterxml.jackson.core:jackson-core:jar:2.8.10:compile - omitted for duplicate)
[INFO]    \- (com.fasterxml.jackson.core:jackson-databind:jar:2.8.10:compile - omitted for duplicate)

Where 2.8.10的值是jackson.version that org.springframework.boot:spring-boot-dependencies:1.5.7.RELEASE:pom定义。

但是,如果我明确添加

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>${jackson.version}</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>${jackson.version}</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>${jackson.version}</version>
</dependency>

to my 依赖性管理部分,然后它正确解析为:

[INFO] ------------------------------------------------------------------------
[INFO] Building dpt-domain-core 1.0.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ dpt-domain-core ---
[INFO] org.autodatacorp.dpt:dpt-domain-core:jar:1.0.0
[INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
[INFO] \- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.1:compile
[INFO] ------------------------------------------------------------------------

这令人困惑,因为这似乎应该相当于做一个import of com.fasterxml.jackson:jackson-bom:2.9.1:pom应该是相等的将该代码的内容手动粘贴到。

我什至尝试过

<dependency>                                                                                  
    <groupId>org.springframework.boot</groupId>                                               
    <artifactId>spring-boot-dependencies</artifactId>                                         
    <version>${spring.boot.version}</version>                                                 
    <exclusions>                                                                              
        <exclusion>                                                                           
            <groupId>com.fasterxml.jackson</groupId>                                          
            <artifactId>jackson-bom</artifactId>                                              
        </exclusion>                                                                          
    </exclusions>                                                                             
    <type>pom</type>                                                                          
    <scope>import</scope>                                                                     
</dependency>                                                                                 

但没有效果。


PS - 如果重要的话,我使用的 Maven 是:

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T11:41:47-05:00)
Java version: 9, vendor: Oracle Corporation

  1. 您可以重新订购 BOM 导入,这将起作用。将 Jackson BOM 放在 Spring Boot BOM 之前。快速示例https://github.com/Flaw101/gsonconverter/blob/feature/jackson_override/pom.xml https://github.com/Flaw101/gsonconverter/blob/feature/jackson_override/pom.xml
  2. 如果你使用Spring Boot Parent POM,你只需要覆盖他们的属性jackson.version覆盖其他框架/库的版本

Spring Boot 也记录了这一点,

https://docs.spring.io/platform/docs/current/reference/html/getting-started-overriding-versions.html https://docs.spring.io/platform/docs/current/reference/html/getting-started-overriding-versions.html

几个额外的链接,

https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-build-systems.html#using-boot-maven-parent-pom https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-build-systems.html#using-boot-maven-parent-pom

https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-build-systems.html#using-boot-maven-without-a-parent https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-build-systems.html#using-boot-maven-without-a-parent

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

导入 BOM pom 时如何覆盖 Spring Boot 的版本号? 的相关文章

随机推荐

  • 如何让消息框3秒后消失?

    我的应用程序中有一个确认屏幕 我告诉用户他的项目已成功保存 他可以按 确定 消息框就会消失 但如果他不这样做 如果没有响应 我怎样才能使消息框在3秒后消失 根据 MSDN 没有用户操作就无法关闭消息框 没有为此操作提供方法 http msd
  • 语法无效:使用初始排序键创建表排序键 auto

    我正在尝试使用target redshift将数据推送到aws redshift https pypi org project target redshift https pypi org project target redshift 我
  • 适用于 Android 的 Google Drive API - 仅 Drive.SCOPE_FILE 访问权限,需要只读

    所以我是个新手 我希望列出 Google 云端硬盘中的所有文件和文件夹 我已经下载了新的 SDK 让我的应用程序获得了所有授权等 我使用示例通过打开工具选择一个文件夹 然后在列表视图中显示内容 BUT NO文件已显示 它仅显示所选文件夹中的
  • 如何在构建之间缓存 Maven 存储库?

    我的目标是能够使用 councourse 构建管道构建 打包和测试使用 Maven 构建的 java 项目 这样的设置已经就位 一切都运行良好 但由于我们的 Nexus 的 Maven 下载率较差 构建时间太长 我的构建作业 yml 文件使
  • 无法创建将编辑者和签名者作为嵌入式收件人的信封

    我将使用我的应用程序凭据创建一个文档 该文档应由编辑接收者编辑并由签名接收者签名 尽管收件人编辑者有文档签名帐户 但它失败并出现以下错误 com docusign esign client ApiException errorCode ED
  • Android:与充当主机的 USB 设备通信

    我们制作了一个可以充当 USB 主机或从机并处理其接收到的数据的设备 我想使用Android手机通过USB向其发送数据 我的研究使我得出结论 如果不修改硬件或操作系统 我们就无法在 USB 主机模式下使用 Android 设备 这样做不是一
  • 比较两个字母数字字符串

    我需要将字符串与以下方式进行比较 任何人都可以为我提供一些关于 C 的见解或算法吗 例如 a5 lt a11 because 5 is less than 11 6xxx lt 007asdf because 6 lt 7 00042Q l
  • Django 模型验证日期和日期时间范围

    在 Django 模型中验证日期和日期时间间隔的最佳解决方案是什么 这是我的模型 class PriceOption Model from datetime DateTimeField verbose name from datetime
  • WPF:ViewModel 类型不包含任何可访问的构造函数

    我正在实例化我的存储库MainViewModel并将这个实例传递给我的孩子使用ViewModel i e CategoryViewModel 我得到了 严重性代码 说明 项目文件行 错误类型 CategoryViewModel 不包含任何可
  • Firebird 多个语句

    有没有办法在 Firebird 上执行多个语句 其中任何一个都不需要返回任何内容 就像导入 SQL 文件并执行它一样 我已经寻找了一段时间 但找不到任何与此相关的东西 执行块是exactly为了这个目的 工作于IBExpert还有一个简单的
  • Nodejs 和 Chrome 中 setTimeout 的不同行为

    代码示例是 global a aaa const obj a a desc console log this console log this a setTimeout obj desc 2000 当我在 Node js 中运行此代码时 我
  • 如何使用 PhantomJS 下载 csv 文件

    当我使用普通浏览器 Chrome 浏览网站 A 时 当我点击网站 A 上的链接时 Chrome 会立即下载 CSV 文件形式的报告 当我检查服务器响应标头时 我得到以下结果 Cache Control private max age 315
  • java LoginContext.login() 如何工作?

    我有以下代码来创建 java 客户端的配置以连接到 JBoss 应用程序服务器 System setProperty java security auth login config auth conf LoginContext auth n
  • android中如何限制横屏方向?

    android中如何限制横屏方向 您的问题很短 但我相信您是在问如何将活动的显示限制为特定方向 为此 请尝试使用android screenOrientation in the
  • 如何在 DirectShow 中更改输出引脚大小和色彩空间/压缩

    如何在 DirectShow 中更改视频源过滤器的输出引脚大小和色彩空间 压缩 我想知道输出引脚属性页数据的存储位置以及如何通过我的代码更改这些数据 您必须编写自己的转换过滤器 或者你可以使用像这样的过滤器FFDShow http ffds
  • 如何找到创建空 WADMetrics 表的 Azure 资源或设置?

    我们有一个资源不断在存储帐户上创建完全空的 WADMetrics 表 我们拥有大量的 Azure 资源 但无法找到创建它们的内容 因为它们完全是空的 似乎每 10 天创建 2 个表 旨在将数据存储在 1 小时和 5 分钟的存储桶中 我们如何
  • java.sql.SQLException: ORA-01843: 不是有效的月份

    将数据插入 Oracle 数据库时出现以下错误 java sql SQLException ORA 01843 not a valid month 数据库中的日期为 dd MMM yy 06 MAR 12 我通过以下方法将 06 03 20
  • Angular:如何配置日期选择器以禁用多个日期范围?

    我有一个带有属性的对象 范围 列表startDate and endDate 我需要在日期选择器上禁用这些范围内的日期的用户输入 例如 我想禁用之间的日期09 01 2019 and 09 02 2019以及之间的日期09 05 2019
  • 编程错误:(psycopg2.ProgrammingError)无法适应类型“numpy.ndarray”

    我正在使用 pandas 创建一个 python 脚本来读取具有多个行值的文件 读取后 我需要构建这些值的数组 然后将其分配给数据帧行值 我使用的代码是 import re import numpy as np import pandas
  • 导入 BOM pom 时如何覆盖 Spring Boot 的版本号?

    如何覆盖 Spring Boot 导入的版本号 而不需要在依赖管理部分手动设置每个工件