Maven解决冲突

Maven依赖冲突

最近在做一个项目,引入了其他部门的包,引入之前服务能正常启动,都好好的。

引入之后服务各种报错,启动不来。 下图是报错之一

image-20220726111306126

直接说解决办法

1、在项目里打开

image-20220726112014248

或者到项目的目录下,手动输入: mvn dependency:tree

然后就能看到如下这种

image-20220726112134863

我找到报错的那个依赖

image-20220726112603034

最左边的就是父类,目录靠右的就是子类。 我这里直接排除父类

pom里如下写

image-20220726112421570

还可以使用idea插件 maven helper

https://cloud.tencent.com/developer/article/1798023?cps_key=1d358d18a7a17b4a6df8d67a62fd3d3d

排查思路

既然是引入新包导致的,就到新包里面看看,不看不知道,一看

image-20220726111446524

你就是个jar包,引入这么依赖干啥。 那么自然也想到了排除这些依赖,怎么排除呢,这里maven提供了非常好的快捷方式即可

### 解决Maven依赖冲突的插件 `maven-dependency-plugin` 是 Maven 官方提供的工具,旨在帮助开发者分析并解决项目中的依赖冲突问题[^2]。 #### 插件功能概述 此插件提供了多种目标(goals),可以执行不同类型的依赖操作。对于处理依赖冲突而言,最常用的命令之一是 `dependency:tree`。通过运行该命令能够可视化整个项目的依赖树结构,从而更容易识别哪些地方出现了重复或不兼容的库版本。 ```bash mvn dependency:tree ``` 上述命令将会打印出当前工程所涉及的所有直接传递性的依赖关系图谱,并标注任何潜在存在的版本冲突情况[^4]。 另外还有其他一些有用的子命令可用于更细致地排查问题: - 使用 `mvn dependency:list` 来获取一份简洁明了的已解析依赖列表; - 应用 `mvn help:effective-pom` 查看实际生效POM文件中定义的所有配置项以及继承自父级POM的部分; - 调用 `mvn dependency:analyze` 对比编译源码所需的类路径同打产物之间的差异,找出未声明却使用的外部资源或是冗余无用的引用。 #### 处理策略建议 针对具体场景下的冲突解决方案可能有所不同,但通常遵循如下原则来决定保留哪一个版本号作为最终选择依据: 1. **优先考虑指定者**:如果两个以上的地方都指定了相同坐标的不同版次,则以离根节点最近的那个为准——即所谓的“就近覆盖远”的规则[^3]。 2. **尊重范围限定**:某些情况下即使存在多个候选对象也可能因作用域设置而互不影响;比如测试期间独享的一套独立于主构建流程之外的小环境里加载特殊定制化组件就不会干扰到正发布物里的相应位置。 3. **借助BOM协调机制**:引入Bill of Materials (BOM) 文件可有效简化跨模块间保持一致性的维护工作量,特别是大型企业内部多团队协作开发时尤为适用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值