文档章节

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

4rnold
 4rnold
发布于 2017/09/02 21:00
字数 417
阅读 30
收藏 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
博文 51
码字总数 26866
作品 0
深圳
程序员
私信 提问
maven 依赖jar包时版本冲突的解决:mvn dependency:tree -Dverbose

maven 依赖jar包时版本冲突的解决: mvn dependency:tree -Dverbose 四种解决方式: 1、第一声明优先原则: 在pom.xml配置文件中,如果有两个名称相同版本不同的依赖声明,那么先写的会生效。...

程序员诗人
04/16
0
0
Maven依赖构建版本冲突(实战cxf asm和cglib冲突)

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myServices2': Invocation of init method failed; nested exception is java.lang.Incompatibl......

wangwei2134
09/06
0
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

没有更多内容

加载失败,请刷新页面

加载更多

存储过程知识点收集

记录下,以后要常用的问题 1、获取刚刚插入数据产生的ID SCOPE_IDENTITY 返回当前作用域的插入后产生的一条ID @@IDENTITY 返回当前表的最后一条ID

轻轻的往前走
6分钟前
0
0
elixir keyword和map的区别

┌──────────────┬────────────┬───────────────────────┐ │ Keyword List │ Map/Struct │ HashDict (deprec...

wmzsonic
9分钟前
0
0
解决bootstrap-table-fixed-columns.js显示列与隐藏列按钮切换表格不对齐

<table class="table-striped table-hasthead nowrap" id="tableTest1" data-search="true" data-show-columns="true" data-fixed-columns="true" data-fixed-number="3"></table> 含有dat......

tianyawhl
12分钟前
0
0
ES6 系列之 defineProperty 与 proxy

摘要: ## 前言 我们或多或少都听过“数据绑定”这个词,“数据绑定”的关键在于监听数据的变化,可是对于这样一个对象:`var obj = {value: 1}`,我们该怎么知道 obj 发生了改变呢? ## def...

阿里云官方博客
17分钟前
0
0
美团点评携手 PingCAP 开启新一代数据库深度实践之旅

一、背景和现状 在美团,基于 MySQL 构建的传统关系型数据库服务已经难于支撑公司业务的爆发式增长,促使我们去探索更合理的数据存储方案和实践新的运维方式。随着近一两年来分布式数据库大放...

TiDB
17分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部