当前位置: 首页 > news >正文

maven 依赖版本冲突异常

maven 依赖版本冲突异常

好巧不巧,前几天刚刚复习完 maven 的内容今天就碰到 maven 报错。

起因是这样的,项目马上快要上线了,在上线之前需要跑一些 audit 去检查项目是否安全(这里主要是 outdated 的依赖检查)。总体来说需要过两个审查:

  • prisma

    https://apps.paloaltonetworks.com/apps

    不是 ORM 的那个,主要是 security check

  • sonatype

    好像就是之前提到的 sonatype nexus 家的 sonatype

    这里是 sonatype lifecycle 里提供的检查

另一个能过自然好,不过现在还是处于试运行状态,还没有上纲上线的需求:

  • snyk

    我还真的不知道 vendor 是谁,下载的就是一个 blobl 文件类型的报告

prisma 这里 java 的依赖查的很严,然后就碰到 spring-boot-autoconfigure 需要升级的事情,所以我就在 pom 下面手动加了一下 spring-boot-autoconfigure 能过审的版本,这个也是问题的触发点。

⚠️ 因为我没办法升级 spring-boot ❌

一个内部使用的依赖一旦升级 boot,就直接报错死给我看,所以不得已的情况下只能升级 spring-boot-autoconfigure 而没升级 spring-boot

总体来说是这样的,如果所有的依赖都只由 parent 去进行管理,那么所有项目里使用的版本是一致的,不会出现任何的问题。可是在一些情况下——比如说现在这个情况——需要升级特定的版本,那么就会出现依赖 A 和依赖 B 尽管使用同样的依赖,但是却用的是不同版本的问题

在这个情况下,其他的 spring-boot 相关依赖用的是未升级的 spring-boot 版本,而 autoconfigure 用的是升过级的版本,就产生了这样的报错信息:

Dependency convergence error for org.springframework.boot:spring-boot-autoconfigure:2.7.12 paths to dependency are:
+-com.company.project:ui:2.0.488-SNAPSHOT+-org.springframework.boot:spring-boot-autoconfigure:2.7.12
and
+-com.company.project:ui:2.0.488-SNAPSHOT+-org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure:2.6.8+-org.springframework.boot:spring-boot-autoconfigure:2.7.11
and
+-com.company.project:ui:2.0.488-SNAPSHOT+-org.springframework.boot:spring-boot-devtools:2.7.11+-org.springframework.boot:spring-boot-autoconfigure:2.7.11
and
+-com.company.project:ui:2.0.488-SNAPSHOT+-org.springframework.boot:spring-boot-starter-test:2.7.11+-org.springframework.boot:spring-boot-test-autoconfigure:2.7.11+-org.springframework.boot:spring-boot-autoconfigure:2.7.11

大致理解一下就是,我声明了 spring-boot-autoconfigure 去使用 2.7.12 版本,但是其他的 spring-boot 依赖因为用的是统一的 spring-boot 版本,调用的是 2.7.11 版本,maven 就不高兴了

spring-boot-starter-test 有自己版本的 spring-boot-autoconfigure 这种情况称之为传递依赖,transitive dependency

最好情况下是统一版本,不过上面我也提了,短期内另一个项目是没办法动的(另一个团队在 support),所以这里只能用 workaround 去处理,也就是 maven 中的 exclusion

产生冲突的依赖如下:

        <dependency><groupId>org.springframework.security.oauth.boot</groupId><artifactId>spring-security-oauth2-autoconfigure</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency>

使用 exclude 的方案:

        <dependency><groupId>org.springframework.security.oauth.boot</groupId><artifactId>spring-security-oauth2-autoconfigure</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></exclusion></exclusions></dependency>

https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html 中也有提过,这个效果大概是:

Project-A-> Project-B-> Project-D-> Project-E <!-- Exclude this dependency -->-> Project-F-> Project C

具体在操作时,org.springframework.security.oauth.boot 就会排除 autoconfigure,不去下载它

相关文章:

maven 依赖版本冲突异常

maven 依赖版本冲突异常 好巧不巧&#xff0c;前几天刚刚复习完 maven 的内容今天就碰到 maven 报错。 起因是这样的&#xff0c;项目马上快要上线了&#xff0c;在上线之前需要跑一些 audit 去检查项目是否安全&#xff08;这里主要是 outdated 的依赖检查&#xff09;。总体…...

蓝牙核心规范(V5.4)11.5-LE Audio 笔记之Context Type

专栏汇总网址:蓝牙篇之蓝牙核心规范学习笔记(V5.4)汇总_蓝牙核心规范中文版_心跳包的博客-CSDN博客 爬虫网站无德,任何非CSDN看到的这篇文章都是盗版网站,你也看不全。认准原始网址。!!! 蓝牙中的上下文类型(Context Type)是用于描述音频流当前使用情况或相关使用情…...

【Linux】RPM包使用详解

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的帮助&#x1f338;文…...

勒索病毒最新变种.Elbie勒索病毒来袭,如何恢复受感染的数据?

引言&#xff1a; 网络犯罪正变得越来越隐秘和危险。其中&#xff0c;.Elbie勒索病毒作为数字犯罪的一部分&#xff0c;以其阴险和复杂性而备受关注。本文将带您深入探索.Elbie勒索病毒的工作原理和如何应对这一数字迷宫。如果受感染的数据确实有恢复的价值与必要性&#xff0…...

ArduPilot开源飞控之AP_Mission

ArduPilot开源飞控之AP_Mission 1. 源由2. AP_Mission类3 简令结构3.1 导航相关3.1.1 jump command3.1.2 condition delay command3.1.3 condition distance command3.1.4 condition yaw command3.1.5 change speed command3.1.6 nav guided command3.1.7 do VTOL transition3.…...

JVM111

JVM1 字节码与多语言混合编程 字节码 我们平时说的java字节码&#xff0c; 指的是用java语言编译成的字节码。准确的说任何能在jvm平台上执行的字节码格式都是一样的。所以应该统称为:jvm字节码。不同的编译器&#xff0c;可以编译出相同的字节码文件&#xff0c;字节码文件…...

排序篇(三)----交换排序

排序篇(三)----交换排序 1.冒泡排序 基本思想: ​ 通过不断地比较相邻的元素&#xff0c;将较大的元素往后移动&#xff0c;从而实现排序的目的。 具体的步骤如下&#xff1a; 从待排序的数组中选择相邻的两个元素进行比较&#xff0c;如果前一个元素大于后一个元素&#…...

React antd Table点击下一页后selectedRows丢失之前页选择内容的问题

一、问题 使用了React antd 的<Table>标签&#xff0c;是这样记录选中的行id与行内容的&#xff1a; <TabledataSource{data.list}rowSelection{{selectedRowKeys: selectedIdsInSearchTab,onChange: this.onSelectChange,}} // 表格是否可复选&#xff0c;加 type: …...

蓝牙核心规范(V5.4)11.4-LE Audio 笔记之音频模型

专栏汇总网址:蓝牙篇之蓝牙核心规范学习笔记(V5.4)汇总_蓝牙核心规范中文版_心跳包的博客-CSDN博客 爬虫网站无德,任何非CSDN看到的这篇文章都是盗版网站,你也看不全。认准原始网址。!!! 从一开始,蓝牙低功耗(Bluetooth Low Energy,BLE)音频的开发就秉持着“以设…...

Spring Boot:利用JPA进行数据库的查删

目录标题 DAO 、Service 、 Controller 层控制器文件示例代码-单个查找查找成功示例代码-列表查找查找成功示例代码-删除删除成功 DAO 、Service 、 Controller 层 DAO 层负责数据库访问&#xff0c;它封装了对数据库的访问操作&#xff0c;例如查询、插入、更新和删除等。 Q…...

1711: 【穷举】满足条件的整数

题目描述 假设a、b、c均为整数&#xff08;1<a,b,c<100)&#xff0c;同时a<b&#xff0c;找出所有符合条件&#xff1a;a2 b2 n*c3的整数组。 按a从小到大的顺序输出所有满足条件的整数组&#xff08;若a相同&#xff0c;则按b从小到大的顺序输出&#xff09; 输入…...

【数据结构】堆的应用-----TopK问题

目录 一、前言 二、Top-k问题 &#x1f4a6;解法一&#xff1a;暴力排序 &#x1f4a6;解法二&#xff1a;建立N个数的堆 &#x1f4a6;解法三&#xff1a;建立K个数的堆&#xff08;最优解&#xff09; 三、完整代码和视图 四、共勉 一、前言 在之前的文章中&#xff…...

QT之xml文件的读写

QT之xml文件的读写 简介用法举例 简介 QT的QDomDocument、QDomElement、QDomNode是Qt XML模块中的三个类&#xff0c;用于解析和操作XML文档。 1&#xff09;QDomDocument类&#xff1a; QDomDocument类表示整个XML文档。它提供了解析XML文档的方法&#xff0c;如setContent(…...

C语言中的异常处理机制是什么?

C语言中的异常处理机制 C语言是一门强大而灵活的编程语言&#xff0c;它为程序员提供了广泛的控制权和自由度。然而&#xff0c;C语言本身并不提供像其他高级语言一样的内置异常处理机制&#xff0c;如Java中的try-catch或Python中的异常处理。因此&#xff0c;C语言程序员需要…...

Java中的并发编程模型和常用工具类

本文主要介绍了Java中的并发编程模型和常用工具类&#xff0c;首先阐述了并发编程的概念及其重要性&#xff0c;然后详细介绍了线程的基本概念、生命周期和状态转换、同步与互斥、死锁问题以及线程池的使用和实现原理。接着介绍了synchronized关键字和Lock接口的使用、原子变量…...

第10章 MySQL(一)

10.1 谈谈MySQL的架构 难度:★★ 重点:★ 白话解析 要想彻底的理解MySQL,它的架构一定要先弄清楚,当Java程序员通过JDBC或者Mybatis去执行一条SQL的时候,到底经历了什么。下边先看一幅图: 户端:Java程序员通过JDBC或者Mybatis去拿MySQL的驱动程序,实际上就是拿客户端。…...

英飞凌 Tricore 架构中断系统详解

本文以TC3系列MCU为例&#xff0c;先来了解中断源是如何产生的&#xff0c;再看一下CPU是如何处理中断源的。 AURIX TC3XX的中断路由模块 Interrupt Router (IR) 在TC3中&#xff0c;中断既可以被CPU处理&#xff0c;也可以被DMA处理&#xff0c;所以手册中不再把中断称为中断…...

单例模式:饿汉式

单例模式全局仅一个实例&#xff0c;用于获取公共的内容 头文件mglobalinfomgr.h class MGlobalInfoMgr {MGlobalInfoMgr();~MGlobalInfoMgr(); public:static MGlobalInfoMgr* GetInstance(); private:static MGlobalInfoMgr* _instance; }; 源文件mglobalinfomgr.cpp MGl…...

什么是视图

目录 一、什么是视图 二、视图的作用 三、创建视图 四、使用视图 1.使用视图查询员工信息 五、注意事项 六、补充 一、什么是视图 视图是基于查询的虚拟表&#xff0c;是一个逻辑表&#xff0c;本身并不包含数据。同真实的表一样&#xff0c;视图包含一系列带有名称的列…...

C++——list(2)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年9月28日 内容&#xff1a;C——list内容讲解 目录 前言&#xff1a; list的const迭代器&#xff1a; const的iterator&#xff1a; const迭代器&#xff1a; operator->: 拷贝构造&#xff1a; 迭代器接口补充&…...

Django基础讲解-路由控制器和视图(Django-02)

一 路由控制器 参考链接&#xff1a; Django源码阅读&#xff1a;路由&#xff08;二&#xff09; - 知乎 Route路由, 是一种映射关系&#xff01;路由是把客户端请求的 url路径与视图进行绑定 映射的一种关系。 这个/timer通过路由控制器最终匹配到myapp.views中的视图函数 …...

【算法题】2873. 有序三元组中的最大值 I

题目&#xff1a; 给你一个下标从 0 开始的整数数组 nums 。 请你从所有满足 i < j < k 的下标三元组 (i, j, k) 中&#xff0c;找出并返回下标三元组的最大值。如果所有满足条件的三元组的值都是负数&#xff0c;则返回 0 。 下标三元组 (i, j, k) 的值等于 (nums[i]…...

HTML5 跨屏前端框架 Amaze UI

Amaze UI采用国际最前沿的“组件式开发”以及“移动优先”的设计理念&#xff0c;基于其丰富的组件&#xff0c;开发者可通过简单拼装即可快速构建出HTML5网页应用&#xff0c;上线仅半年&#xff0c;Amaze UI就成为了国内最流行的前端框架&#xff0c;目前在Github上收获Star数…...

EXCEL会计记账报表财务软件企业公司做账系统凭证自动生成报表

本系统基于VBA编程设计&#xff0c;具有界面简洁美观&#xff0c;操作方便快捷&#xff0c;功能完备实用的特点&#xff0c;系统分为基本信息、凭证处理、账簿查询、会计报表、固定资产管理、系统管理、凭证数据库七大模块&#xff0c;您只需要录入记账凭证&#xff0c;就可以自…...

Can‘t pickle <class ‘__main__.Test‘>: it‘s not the same object as __main__.Test

目录 原因1 类名重复了 案例1 变量名和类名重复 原因1 类名重复了 检查项目代码&#xff0c;是不是其他地方有同名类。 案例1 变量名和类名重复 转自&#xff1a;python3报错Cant pickle <class __main__.Test>: its not the same object as __main__.Test解决 - 知乎…...

第九章 动态规划 part14 1143. 最长公共子序列 1035. 不相交的线 53. 最大子序和

第五十六天| 第九章 动态规划 part14 1143. 最长公共子序列 1035. 不相交的线 53. 最大子序和 一、1143. 最长公共子序列 题目链接&#xff1a; 题目介绍&#xff1a; 思路&#xff1a; 本题和“最长重复子数组”区别在于**这里不要求是连续的了&#xff0c;但要有相对顺序*…...

腾讯云服务器南京地域详细介绍、测试IP和Ping值测速

腾讯云服务器南京地域怎么样&#xff1f;南京地域很不错&#xff0c;正好处于中间的位置&#xff0c;南方北方用户均可以选择&#xff0c;网络延迟更低速度更快&#xff0c;并且目前南京地域有活动&#xff0c;南京地域可用区可选南京一区、南京二区和南京三区&#xff0c;腾讯…...

理解CSS的层叠性和继承性

CSS的层叠性&#xff08;cascading&#xff09;指的是在同一元素上应用多个样式时&#xff0c;不同样式之间的优先级别以及如何进行组合和冲突解决的规则。具体来说&#xff0c;CSS采用的是“选择器优先级”规则来判断哪个样式优先级更高&#xff0c;如果多个样式的优先级相同&…...

OSI体系结构和TCP/IP体系结构

在第一章&#xff08; 计网第一章 &#xff09;的时候&#xff0c;曾经提到过OSI体系结构和TCP/IP体系结构&#xff0c;并对它们进行了简单的对比。这篇博客在其基础上进行更深层次的理解。 一.OSI体系结构&#xff1a; 通信子网&#xff1a; 计算机网络在逻辑功能上可以分为…...

侯捷 C++ STL标准库和泛型编程 —— 8 适配器

8 适配器 适配器 Adapter 只是一个小变化&#xff0c;比如改个接口&#xff0c;函数名称等等其出现在三个地方&#xff1a;仿函数适配器&#xff0c;迭代器适配器&#xff0c;容器适配器可以使用继承 / 复合的两种方式实现&#xff0c;STL中都用复合 其思想就是将该记的东西记…...

wordpress頂部公告插件/seo发外链工具

当我们的项目中有peerDependencies时&#xff0c;执行npm install会发现peerDependencies的依赖项并不会下载&#xff0c;如果一个个下载太过麻烦&#xff0c;因此推荐一个npm库npm-install-peers&#xff0c;可以直接下载。 npm install --save-dev npm-install-peersnpm scr…...

网站上的验证码怎么做的/天津seo外包团队

在python中用于生成随机数的模块是random,在使用前需要import, 下面看下它的用法。random.randomrandom.random()用于生成一个0到1的随机符点数: 0 < n < 1.0注意&#xff1a; 以下代码在Python3.5下测试通过&#xff0c; python2版本可稍加修改描述random() 方法返回随机…...

美容公司网站什么做才好/分类信息网

引入进程和线程的概念及区别 1、线程的基本概念 概念 线程是进程中执行运算的最小单位&#xff0c;是进程中的一个实体&#xff0c;是被系统独立调度和分派的基本单位&#xff0c;线程自己不拥有系统资源&#xff0c;只拥有一点在运行中必不可少的资源&#xff0c;但它可与同属…...

soho在哪里做网站/产品网络营销策划

JavaScript&#xff0c;DOM操作表格 学习要点&#xff1a; 1.操作表格 DOM在操作生成HTML上&#xff0c;还是比较简明的。不过&#xff0c;由于浏览器总是存在兼容和陷阱&#xff0c;导致最终的操作就不是那么简单方便了。本章主要了解一下DOM操作表格和样式的一些知识。 一&am…...

厦门微信网站建/今天新闻

如图所示: 如果此时给.div1添加属性 position属性是 .div1就会消失不见 那么此时就必须显示给.div1加上宽度&#xff0c;才能显示出来结果如图所示:转载于:https://blog.51cto.com/11871779/2072041...

wordpress实现图片幻灯展示效果/免费做网站推广的软件

应用场景 通常情况下我们的apps发布后也就是release模式下log是不显示的&#xff0c;debug模式下是显示log的&#xff0c;但是在特殊情况下我们测试release包的时候需要log的时候&#xff0c;就无法使用BuildConfig.DEBUG来达到要求&#xff0c;因为在release模式下自动设置为f…...