Maven依赖冲突解决之exclusions

1. 背景

  1. 作为java生态下开发者,往往需要使用大量线程的第三方库,一般都是以jar包形式存在。
  2. maven作为事实上主流的jar包依赖管理工具,Idea和Eclipse都支持创建maven工程来管理jar包依赖。
  3. 使用maven进行jar包依赖管理时,maven会自行管理jar包及其依赖链条,但往往会遇到依赖冲突问题,这时候就可以尝试使用exclusion来进行依赖管理。

2. 解决方式

  1. 场景
    在这里插入图片描述
    假如hadoop集群中hadoop版本是3.2.1,这时候为了保证程序能够顺利操作hadoop,需要引入hadoop-client的3.2.1版本。但这里也可以看到,spark-core_2.12内部也有对hadoop-client的依赖,而且版本是低版本的2.7.4,这时候往往就会产生冲突或者未知错误。所以需要使用exclusions做依赖排除。

  2. 解决方式
    使用exclusions来对某一个第三方库引入的依赖jar包做排除

<dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>${spark.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.hadoop</groupId>
                    <artifactId>hadoop-client</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.google.guava</groupId>
                    <artifactId>guava</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
                    Maven依赖冲突解决之exclusions1. 背景作为java生态下开发者,往往需要使用大量线程的第三方库,一般都是以jar包形式存在。maven作为事实上主流的jar包依赖管理工具,Idea和Eclipse都支持创建maven工程来管理jar包依赖。使用maven进行jar包依赖管理时,maven会自行管理jar包及其依赖链条,但往往会遇到依赖冲突问题,这时候就可以尝试使用exclusion来进行依赖管理。2. 解决方式场景假如hadoop集群中hadoop版本是3.2.1,这
				
SpringBootApplicationexclude不生效问题排查 在ManApplication上添加了SpringBootApplication中配置了exclude={org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration.class} 但是在启动过程了ElasticsearchAutoConfiguration还是加载了,使用配置文件的方式就可以避免加载。 1 这个标签的作用是排除关联依赖的引入,因为maven的pom依赖其中 有一点是将关联的依赖全都引入进来 2 这个标签在这的作用就是 如果关联的依赖和引入的其他依赖可能存在冲突, 就必须将关联的依赖排除掉,所以就用这个标签。 3 另外这个+s的,大家应该也明白 ,就是可以包含多个吗!!!! 依赖关系:Project-A>Project-B>Project-C,但是Project-A不依赖Project-C,在Project-A中的POM.xml应该进行
1 这个标签的作用是排除关联依赖的引入,因为maven的pom依赖其中 有一点是将关联的依赖全都引入进来 2 这个标签在这的作用就是 如果关联的依赖和引入的其他依赖可能存在冲突, 就必须将关联的依赖排除掉,所以就用这个标签。
文章来源: Import Dependency Management with Exclusion Exclusion at import won’t work, try excluding it from the actual user of the dependency 在dependencyManagement里面的dependency中,使用exclusions,是不会有作用的。需要在实际使用的地方,去添加exclusions。 maven官方有下面一段话: https://maven.a
1。不知道为什么配置文件[xmlymlproperties]不生效。[可能是java路径也可能是resource路径] 2。Maven项目配置文件 不实时更新 3。非resource路径下的配置文件不生效 1.把Maven打包方式换成打jar包 pom.xml修改打包方式 <groupId>com.biturd</groupId> <artifactId>logStudy</artifactId&gt
1.compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去 2.test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit 3.runtime:表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段 4.provided:打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可.
xclusions 但依赖调节并不解决所有问题,我们还需要exclusions来进行排除依赖。 例如这样一个情况,工程中引入了A,A依赖B,但是B的版本过旧。 此时可以使用exclusions排除该传递性依赖,并显示声明一个最新版本的B依赖。 比如这样: &amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;com.lowagie&amp;amp;lt;/groupId
1、什么是依赖传递 ​ 在maven中,依赖是可以传递的,假设存在三个项目,分别是项目A,项目B以及项目C。假设C依赖 B,B依赖A,那么我们可以根据maven项目依赖的特征不难推出项目C也依赖A。 2、什么是依赖冲突 ​ 由于依赖传递现象的存在, 如spring-webmvc 依赖 spirng-beans-5.1.5,spring-aop 依赖 springbeans-5.1.6,但是发现 spirng-beans-5.1.5 加入到了工程 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> Hive错误之 Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask错误分析 42003
Hive错误之 Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask错误分析 作者您好,我是hadoop3.1.3和Hive3.1.3,大概率可能是2.4的原因,那该如何解决呢 Spark Streaming 结合kafka流式数据处理代码案例(含精确消费一次结果保存到mysql) 小卢的博客: 大佬总结的很好,技术很强,就是在写mysql的时候,先用collect拉取到Driver端再去写mysql,这样的效率会比较低吧?为什么不用foreachPartition在各个节点写mysql呢?纯属好奇,不是杠精