maven.类包冲突解决案例
目录
问题描述
操作步骤
找到pom.xml目录
打印依赖树
查看jar包对应的AGV
依赖树中搜索
在POM.xm中的依赖项spring-support排除servlet-api依赖的传递
查看依赖的jar包
问题描述
javax.servlet.http.HttpServletResponse 类在servlet-api-2.3.jar 中,同时也在 javax.servlet-api.3.1.0.jar包中,包servlet-api-2.3.jar 先加载,javax.servlet-api-3.1.0.jar后加载,实际上,HttpServletResponse 使用的就是servlet-api-2.3.jar中的类了,但我需要javax.servlet-api-3.1.0.jar的同签名类。
备注:两个包的同签名类,类名相同,单方法可能就不同了。
操作步骤
方法:mvn dependency:tree 指令在POM.xml所在的文件目录运行,输出的就是依赖树
查看maven的依赖树结构:mvn dependency:tree
输出到某个文件中:mvn dependency:tree -->tree.txt
操作:
找到pom.xml目录
打印依赖树
- à cd D:\JavaWorkSpace\*** 回车
- d: 回车
- mvn dependency:tree 回车
说明:第一次运行需要下载一些插件,不用慌,等等即可。
报文如下:
[WARNING] The artifact commons-email:commons-email:jar:1.1 has been relocated to org.apache.commons:commons-email:jar:1.1
[INFO] lenovo-tms-web:lenovo-tms-web:war:0.0.1-SNAPSHOT
[INFO] +- commons-codec:commons-codec:jar:1.5:compile
[INFO] +- org.springframework:spring-webmvc:jar:4.1.7.RELEASE:compile
[INFO] | +- org.springframework:spring-beans:jar:4.1.7.RELEASE:compile
[INFO] | +- org.springframework:spring-core:jar:4.1.7.RELEASE:compile
[INFO] | \- org.springframework:spring-expression:jar:4.1.7.RELEASE:compile
[INFO] +- org.springframework:spring-jdbc:jar:4.1.7.RELEASE:compile
[INFO] +- org.springframework:spring-context:jar:4.1.7.RELEASE:compile
[INFO] +- org.springframework:spring-context-support:jar:4.1.7.RELEASE:compile
[INFO] +- org.springframework:spring-tx:jar:4.1.7.RELEASE:compile
[INFO] +- org.springframework:spring-orm:jar:4.1.7.RELEASE:compile
[INFO] +- org.springframework:spring-aop:jar:4.1.7.RELEASE:compile
[INFO] | \- aopalliance:aopalliance:jar:1.0:compile
[INFO] +- org.springframework:spring-oxm:jar:4.1.7.RELEASE:compile
[INFO] +- org.springframework:spring-web:jar:4.1.7.RELEASE:compile
[INFO] +- org.springframework:spring-support:jar:2.0.8:compile
[INFO] | \- commons-logging:commons-logging:jar:1.1:compile
[INFO] | +- logkit:logkit:jar:1.0.1:compile
[INFO] | +- avalon-framework:avalon-framework:jar:4.1.3:compile
[INFO] | \- javax.servlet:servlet-api[QQW1] :jar:2.3:compile
[INFO] +- org.aspectj:aspectjweaver:jar:1.7.2:compile
[INFO] +- org.hibernate:hibernate-validator:jar:5.0.1.Final:compile
[INFO] | +- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] | +- org.jboss.logging:jboss-logging:jar:3.1.1.GA:compile
查看jar包对应的AGV
方法:Eclipse中在 中找到有问题的jar包,【右键】【Maven】【Open POM】 使用pom.xml视图查看,使用artifactId的值在依赖树中检索
报文:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.3</version>
</project>
依赖树中搜索
搜索文本:servlet-api,如下图:
可以看出依赖的顶层是:spring-spport,这就需要在spring-support中排除掉队servlet-api的依赖。
在POM.xm中的依赖项spring-support排除servlet-api依赖的传递
原始POM依赖项:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-support</artifactId>
<version>${springsupportVersion}</version>
<scope>compile</scope>
</dependency>
添加依赖传递排除后:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-support</artifactId>
<version>${springsupportVersion}</version>
<scope>compile</scope>
<!-- 剪除依赖传递项 -->
<exclusions>
<exclusion>
<!-- 剪除项的AG,版本就不用了 -->
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
查看依赖的jar包
方法: 1. 找到报错的类,F3 查看引用的jar包。2. 重新打印依赖树继续检索
方法1:可以看出引用的包是javax.servlet-api的包了
方法2:可以看出没有servlet-api的包了
END
maven.类包冲突解决案例相关推荐
- [转载] Maven类包冲突终极三大解决技巧 mvn dependency:tree
举例 A依赖于B及C,而B又依赖于X.Y,而C依赖于X.M,则A除引B及C的依赖包下,还会引入X,Y,M的依赖包(一般情况下了,Maven可通过<scope>等若干种方式控制传递依赖). ...
- Maven类包冲突终极解决小技若干
那句话怎么讲来着的... 引用 如果你爱他,就请让他用Maven,因为那里是天堂,如果你恨他,就请让他用Maven,因为那里是地狱. Maven对于新手来说是<步步惊心>,因为它包罗万象, ...
- IntelliJ IDEA Maven jar包冲突解决,快速发现jar包冲突
IntelliJ IDEA 自带的Diagrams 去查看jar包冲突相当费劲 ~ ,安装个插件即可快速解决该问题 打开Settings,搜索maven helper,并安装 安装完成后,直接打开po ...
- Maven的传递性依赖及其jar包冲突解决
一.Maven简介 Maven是一个跨平台的项目管理工具.作为Apache组织的一个颇为成功的开源项目,其主要服务于基于Java平台的项目创建,依赖管理和项目信息管理. 二.Maven的依赖管理 1. ...
- Maven构建聚合工程以及jar包冲突解决使用总结
一.聚合工程 如图所示: SpringCloud_CH3为聚合工程,eurekaclientarticleservice为被聚合工程. 聚合工程为一个maven工程:聚合类的pom.xml文件为: & ...
- 【maven】maven jar 包 冲突 的解决方式
1.概述 视频参考:maven jar 包 冲突 的解决方式 此处文章参考:Mvn : Maven的依赖管理 依赖冲突 解决思路
- NoSuchMethodError 错误——包冲突解决办法
包冲突的解决办法 注意所有关于maven的pom文件的改动,最后都要reimport一下,IDE会强制根据新的pom.xml设置重新分析并加载依赖类包,以得到和pom.xml设置相同的依赖.(这一步非 ...
- maven 下载包冲突问题
maven 下载包冲突问题 java开发需要调用apache phoenix接口,配置pom.xml文件,内容如下: <repositories> <reposito ...
- Maven传递依赖冲突解决(版本冲突)
2019独角兽企业重金招聘Python工程师标准>>> 一.首先要明白直接依赖和传递依赖的概念: A > B > C 直接依赖:A > B , B > C 传 ...
最新文章
- .NET Core微服务之基于MassTransit实现数据最终一致性(Part 1)
- html里面onclick属性是什么,html中onclick事件属性定义与用法
- 利用python制作的可视化批量文件后缀处理工具
- esp32查询剩余内存_SQL 查询语句先执行 SELECT?兄弟你认真的么?
- 【李宏毅机器学习】Classification_1 分类(p10) 学习笔记
- RK3399Pro Android Rock-X 人工智能开发系列(1)
- 循环队列(java)
- CGCS2000 VS WGS84
- 你可能不知道的 AS 小技巧之「Extract Resource」
- 大富翁论坛-富翁笔记-Delphi数据库处理(转载)
- 域控-笔记四(综合应用)
- HTML和CSS实现京东登录页面(html,css代码详解)
- r语言 rgl 强制过程中_R语言中%||%是什么意思?
- 申请免费的域名并且通过FTP上传及通过自己的域名访问自己的网站
- 银行卡收单____商户费率_代理商分润
- 美国卡内基梅隆大学计算机排名,卡内基梅隆大学,美国卡梅基梅隆大学世界排名?...
- 专题分纲目录 思维导图
- Maven详解(第二节)
- 人效提高350%,基于KICP搭建的营销套电客服机器人,让欧派家居赢在起点
- 城市路(信息学奥赛一本通 - T1381)