文档章节

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

4rnold
 4rnold
发布于 2017/09/02 21:00
字数 417
阅读 26
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

mysql在查询结果前加序号

在查询结果前加序号: set @rn=0; select @rn:=@rn+1 as 序号,你查询的结果集

lyle_luo
22分钟前
1
0
webpack 工作原理

暂无内容

agenyun
29分钟前
1
0
iOS返回指定控制器或者关闭自己当前控制器

RT。。。 这种情况其实很常见,比如,从A界面进入B界面在进入C界面,如果返回时,直接从C回到A,怎么做?或者说无限跳转进入BCDEF...XYZ。。。之后直接返回某一个界面,怎么做? 其实这种的有...

RainOrz
30分钟前
1
0
文章收藏

对接口或者方法进行性能测试的工具contiperf: http://www.ltesting.net/ceshi/ceshijishu/xncs/2012/1127/205747.html...

月下狼
35分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部