文档章节

maven jar包依赖关系查看、包冲突解决

4rnold
 4rnold
发布于 2017/09/02 21:00
字数 417
阅读 18
收藏 0
点赞 0
评论 0

在idea中 用maven dependency:tree 运行项目 得到

[INFO] shiro.demo:shiro.demo:war:0.0.2-SNAPSHOT
[INFO] +- junit:junit:jar:4.7:test
[INFO] +- javax.servlet:jstl:jar:1.2:compile
...
...
...
[INFO] |  +- com.mortennobel:java-image-scaling:jar:0.8.6:compile
[INFO] |  |  \- com.jhlabs:filters:jar:2.0.235:compile
[INFO] |  +- javax.servlet:javax.servlet-api:jar:3.1.0:compile
[INFO] |  \- org.apache.shiro:shiro-all:jar:1.2.4:compile
[INFO] |     \- org.apache.shiro:shiro-guice:jar:1.2.4:compile
[INFO] |        +- org.apache.shiro:shiro-core:jar:1.2.4:compile
[INFO] |        +- com.google.inject:guice:jar:3.0:compile
[INFO] |        |  \- javax.inject:javax.inject:jar:1:compile
[INFO] |        \- com.google.inject.extensions:guice-multibindings:jar:3.0:compile
[INFO] +- org.opensymphony.quartz:quartz:jar:1.6.1:compile
[INFO] +- redis.clients:jedis:jar:2.8.0:compile
[INFO] |  \- org.apache.commons:commons-pool2:jar:2.3:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.7.4:compile
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.7.4:compile
[INFO] \- com.fasterxml.jackson.core:jackson-annotations:jar:2.7.4:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 27.952 s
[INFO] Finished at: 2017-09-02T20:46:05+08:00
[INFO] Final Memory: 15M/116M

可以看到依赖关系。 之前我把shiro相关的dependency都注释掉 项目依然可以运行,原来shiro-freemarker-tags:jar中依赖了shiro相关的包,这样一看就清晰了。

怎么查找所有的重复包呢? 首先需要添加如下插件maven-enforcer-plugin, rules 为DependencyConvergence

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-enforcer-plugin</artifactId>
   <version>1.4.1</version>
   <executions>
      <execution>
         <id>default-cli</id>
         <configuration>
            <rules>
               <DependencyConvergence/>
            </rules>
         </configuration>
         <goals>
            <goal>enforce</goal>
         </goals>
      </execution>
   </executions>
</plugin>

然后执行 mvn enforcer:enforce 看到茫茫多的包重复

...
[WARNING] 
Dependency convergence error for org.springframework:spring-jdbc:4.2.5.RELEASE paths to dependency are:
+-shiro.demo:shiro.demo:0.0.2-SNAPSHOT
  +-org.springframework:spring-jdbc:4.2.5.RELEASE
and
+-shiro.demo:shiro.demo:0.0.2-SNAPSHOT
  +-org.mybatis:mybatis-spring:1.1.1
    +-org.springframework:spring-jdbc:3.1.1.RELEASE

[WARNING] 
Dependency convergence error for commons-codec:commons-codec:1.6 paths to dependency are:
+-shiro.demo:shiro.demo:0.0.2-SNAPSHOT
  +-org.apache.httpcomponents:httpclient-cache:4.2.5
    +-org.apache.httpcomponents:httpclient:4.2.5
      +-commons-codec:commons-codec:1.6
and
+-shiro.demo:shiro.demo:0.0.2-SNAPSHOT
  +-commons-codec:commons-codec:1.10
and
+-shiro.demo:shiro.demo:0.0.2-SNAPSHOT
  +-commons-httpclient:commons-httpclient:3.1
    +-commons-codec:commons-codec:1.2
and
+-shiro.demo:shiro.demo:0.0.2-SNAPSHOT
  +-net.mingsoft:shiro-freemarker-tags:0.1
    +-commons-codec:commons-codec:1.10
...

有时候包会发生冲突怎么解决冲突呢? 在引入不想要的包的根加上exclusion

<dependency>
	<groupId>net.mingsoft</groupId>
	<artifactId>shiro-freemarker-tags</artifactId>
	<version>0.1</version>
	<exclusions>
		<exclusion>
			<artifactId>shiro-all</artifactId>
			<groupId>org.apache.shiro</groupId>
		</exclusion>
	</exclusions>
</dependency>

© 著作权归作者所有

共有 人打赏支持
4rnold
粉丝 1
博文 49
码字总数 21672
作品 0
深圳
程序员
用dependency:tree查看maven引入jar包的传递依赖

maven项目的pom.xml文件给项目导入了不同的jar包,有时候不同的dependency会引入同一个jar包的不同版本。 当不同版本的jar包被依赖后,可能会出现: 冲突。 有的版本的jar包不会被classload...

哲别0
2017/10/26
0
0
Maven依赖进阶

使用maven的程序员都会遇到一个问题,那就是maven依赖冲突的问题,这会导致ClassNotFound或者MethodNotFound这样的异常。其实只要明白maven依赖的根本性的原则就不怕这样的问题了。 一、mav...

Lubby
2016/05/12
1K
8
一点解决版本冲突的应急思路、怎样在所有 jar 包文件中搜索冲突的方法?

原文出处:等你归去来 maven是一个很好的项目管理工具,你可以轻松的定义一个引用,从而达到使用别人写好的库的作用。且maven可以轻松地和jenkins配合,从而使打包部署变得更容易。 但是也因...

等你归去来
01/15
0
0
去掉maven中不想要的jar包

问题描述:就是说项目中要用到某一个a.jar包,通过maven引入了之后,也自动的导入了该jar包所依赖的包,这里就会存在一个问题,如果a.jar包依赖b.jar这个项目的1.0版本,可是我的项目中已经有...

天高地厚宇宙无穷
2016/07/25
38
0
Android 查看jar包之间依赖的方法,解决包冲突问题,妈妈再也不用担心了

有时候,我们的工程大了,或者引用的外面的工具包,开源jar包或者推送等jar包,开开心心的想集成一下,可是一下子来了,奔溃了,jar包之间冲突,常见的support-v4包不同版本之间的冲突。 gr...

DanyCoder
05/04
0
0
maven冲突解决

主要目的是升级现有的jar包,排除传递依赖引起的冲突 maven 命令 mvn dependency tree mvn dependency:tree命令可以查看当前项目的依赖关系。可以将当前POM的依赖关系按照树形结构展开。 上述...

_li_
2016/10/25
0
0
Maven依赖分析

来自官网 背景 昨天帮一位同事排查了一个依赖冲突的问题。问题的现象就是在IntelliJ IDEA运行项目正常,但是打包(Maven assembly jar)之后传到服务器运行失败,报错:。 后来定位到某个类存...

金珑
2017/11/24
0
0
关于Jar包的管理,你有什么想说的吗

对于做Java的同学而言,应用依赖的那一众的Jar如何管理是个大难题,像我们的很多应用动不动就依赖上百个Jar,这些Jar的冲突问题很容易 导致各种奇怪现象,例如有些机器是OK的,有些机器却报N...

大风厂蔡成功
2014/02/12
1K
2
maven添加 xfire-all-1.2.6.jar 导致的spring配置文件异常

maven添加 xfire-all-1.2.6.jar 导致的spring配置文件错误 1. 环境 maven spring-3.2.3 xfire-1.2.6 2. 问题描述 在工程中的 pom.xml 中添加 xfire <dependency><groupId>org.codehaus.xfir......

yuanyuan_186
2015/10/29
0
0
Mavn 项目 引入第三方jar包 导致ClassNotFoundException

案例 我有一个Maven构建的项目,项目模块之间有依赖关系,我需要用到一个本地的jar包,而该jar包不能通过配置pom.xml文件从远程仓库自动下载,于是我直接导入该jar包到其中一个项目,不通过p...

Dylan1009
05/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Confluence 6 配置时间和日期格式

你可以修改你 Confluence 为用户显示的时期和时间格式。设置的句法使用的是 SimpleDateFormat class,请参考 Java SimpleDateFormat 文档中的内容来设置日期和时间格式。 有下面 3 个时间和日...

honeymose
5分钟前
0
0
php seralize unserialize

关于PHP 序列化(serialize)和反序列化(unserialize)出现错误(Error at offset)的解决办法。 首先我们分析一下为什么会出现这个错误: 编码问题 UTF-8: ANSI: 我发现在我的机器上边编码改...

yeahlife
12分钟前
0
0
七、JSP九大内置对象和四个作用域

九大内置对象: request:类型是HttpServletRequest,和Servlet里的HttpServletRequest一模一样。 response:类型是HttpServletResponse,和Servlet里的HttpServletResponse一模一样。JSP里基...

Wakeeee_
15分钟前
0
0
第十四章NFS服务搭建与配置

14.1 NFS介绍 NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netap...

Linux学习笔记
47分钟前
0
0
双向认证-nginx

1、设置容器 docker run -it --name nginx-test2 -v /home/nginx:/apps -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -p 8183:80 -p 7443:443 -d nginx:stable 2、修改nginx配......

hotsmile
48分钟前
0
0
深入了解 Java 自动内存管理机制及性能优化

一图带你看完本文 一、运行时数据区域 首先来看看Java虚拟机所管理的内存包括哪些区域,就像我们要了解一个房子,我们得先知道这个房子大体构造。根据《Java虚拟机规范(Java SE 7 版)》的规...

Java大蜗牛
50分钟前
4
0
SpringBoot | 第六章:常用注解介绍及简单使用

前言 之前几个章节,大部分都是算介绍springboot的一些外围配置,比如日志 配置等。这章节开始,开始总结一些关于springboot的综合开发的知识点。由于SpringBoot本身是基于Spring和SpringMvc...

oKong
50分钟前
9
0
云数据库架构演进与实践

如今,大型企业如金融企业和银行等,在下一代的微服务架构转型要求下,需要基础软件和数据平台能够实现原生的云化,以满足微服务架构的需求。 微服务,也就是一种面向服务的,有特定边界的松...

巨杉数据库
52分钟前
0
0
Linux系统梳理---系统搭建(一):jdk卸载与安装

1.去官网下载符合Linux版本的jdk,暂用jdk-8u171-linux-x64.rpm 2.登陆Linux,进入usr目录,创建java目录(方便管理,可以其他位置):mkdir java 3.上传下载的jdk包至Linux服务器,使用rz指令(sz f...

勤奋的蚂蚁
今天
0
0
Linux Kernel 4.16 系列停止维护,用户应升级至 4.17

知名 Linux 内核维护人员兼开发人员 Greg Kroah-Hartman 近日在发布 4.16.18 版本的同时,宣布这是 4.16 系列的最后一个维护版本,强烈建议用户立即升级至 4.17 系列。 Linux 4.16 于 2018 年...

六库科技
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部