解决maven传递依赖中的版本冲突

首先在pom.xml中添加:


<reporting>

		<plugins>

			<plugin>

				<groupId>org.apache.maven.plugins</groupId>

				<artifactId> maven-project-info-reports-plugin </artifactId>

			</plugin>

		</plugins>

	</reporting>
如果用的是eclipse,那就用run as-build-在Goals那个框框里输入:
project-info-reports:dependencies,如果实在dos环境下,
就mvn project-info-reports:dependencies。然后就会在target的文件夹下,生成一个site文件夹,里边有个dependency.html,进去就能看到详细的依赖的信息。
或者直接在eclipse中打开pom.xml文件
会看到打开的窗口中有一个dependency hie开头的选项卡。
这个选择卡页面左半部分显示了详细的jar包依赖树。右半部分则是maven将会下载的jar包。

比如我们看到右半部分有2个asm的jar,版本不同。
现在需要排除其中低版本的jar(比如xwork-core下的某个jar依赖的asm版本相对较低,不一定说是xwork-core依赖,而是它的依赖的依赖,即多重依赖的asm都是可以的)


<dependency>

			<groupId>org.apache.struts.xwork</groupId>

			<artifactId>xwork-core</artifactId>

			<version>${struts.version}</version>

			<exclusions>

				<exclusion>

					<artifactId>asm</artifactId>

					<groupId>asm</groupId>

				</exclusion>

			</exclusions>

		</dependency>

当然我们也可以在dependency hie开头的选项卡中右半部分直接选中那个低版本的asm.jar。

然后右键exclude maven...点击确定会自动生成上面的。

时间: 2024-10-07 22:17:31

解决maven传递依赖中的版本冲突的相关文章

maven exclusion 解决maven传递依赖中的版本冲突

传递依赖是maven最有特色的.最为方便的优点之一,可以省了很多配置.如a 依赖 b,b 依赖c 默认 a也会依赖 c.但是也会带来隐患,如版本冲突.当然maven也考虑到解决办法,可以使用exclusions来排除相应的重复依赖. 但是我们还会遇到一个严重的问题,那就是,我怎么知道是哪个包的传递依赖产生的冲突 ?那该怎么办呢?当然,maven也会有相应的解决方案. 首先,你要在pom.xml中加上maven-project-info-reports-plugin插件. <reporting>

httpclient版本冲突,maven工程中传递依赖导致的版本冲突

A服务发送http请求调用B服务时,出现异常信息:2020-03-23 10:15:14.001:WARN:oejs.ServletHandler:qtp760563749-27: org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/http/util/Argsat

Maven依赖jar包版本冲突解决方案

1.为何会产生依赖冲突 Maven中的传递性依赖机制,一方面简化了依赖声明,另一方面如果传递依赖有可能引发版本冲突.例如:有这样的依赖关系:a->b->c->x(1.0).a->d->x(2.0),对于这样的冲突Maven给出的方案是:第一原则:路径最近者优先,第二原则:在路径长度相等的前提下,pom中的依赖声明的顺序决定了谁会被解析. 2.如何排除依赖 pom如下: <dependency> ...... <exclusions> <exclu

施用 maven shade plugin 解决 jar 或类的多版本冲突

施用 maven shade plugin 解决 jar 或类的多版本冲突 使用 maven shade plugin 解决 jar 或类的多版本冲突java 应用经常会碰到的依赖的三方库出现版本冲突,下面举一个具体的例子. Dubbo 是一个分布式的服务框架,其中的一种 rpc 实现(dubbo 协议)使用 hessian 3.2.0 来做序列化,另外一种实现(hsf协议)同样使用了 hesssian,但使用的版本是 3.0.14.如果现在一个应用中同时使用了 dubbo 协议和 hsf 协议

Maven传递依赖的时候,同名包不同版本的包均会下载,但是编译的时候,只会加载一个高版本的。

描述,在一个Maven项目中,同时依赖了spring-tomcat-weaver  和  struts-core 包,但是spring-tomcat-weaver 需要commons-digester-1.2 struts-core 需要commons-digester-1.8 Pom文件如下: <dependencies> <dependency> <!-- 需要commons-digester-1.2包 --> <groupId>org.springfr

spring maven项目解决依赖jar包版本冲突方案

引入:http://blog.csdn.net/sanzhongguren/article/details/71191290 在spring reference中提到一个解决spring jar包之间版本冲突的解决方案,原文如下 It is possible to accidentally mix different versions of Spring JARs when using Maven. For example, you may find that a third-party lib

解决Maven下载依赖慢的问题(转)

使用Maven构建项目时,项目中有的依赖包可能下载的非常慢,我们可以通过配置镜像来解决这个问题. 之前开源中国的那个好像已经关闭了,于是我找到了一个阿里的来解决. 在Maven的配置文件(%MAVEN%/conf/setting.xml)中的< mirrors> 标签中加入 <!-- 阿里云仓库 --> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <

使用tomcatPlugin配合JRebel解决maven项目依赖war的打包和热部署的问题

一.问题出现 事情是这样的,原本我们web项目每一个都是独立的,顶多是依赖一些打包为jar的公共项目模块,但是webapp下的资源文件还是独立的.但是,由于我们自己封装的框架包含着一部分公共的前端资源文件(js.css.img等)和页面模板,当web项目多了,文件冗余自然就多了,如果框架需要调整修改,那得每个项目都要改一遍,那不是烦死?所以,我们决定想办法把这部分文件也要抽取出来,像jar包一样需要用到就通过maven依赖进来就行了.但是,这些在webapp下的文件应该是一个web项目的结构啊,

Maven传递依赖的时候,同名包不同版本号的包均会下载,可是编译的时候,仅仅会载入一个高版本号的。

描写叙述,在一个Maven项目中.同一时候依赖了spring-tomcat-weaver  和  struts-core 包.可是spring-tomcat-weaver 须要commons-digester-1.2 struts-core 须要commons-digester-1.8 Pom文件例如以下: <dependencies> <dependency> <!-- 须要commons-digester-1.2包 --> <groupId>org.sp