`
wolf_19
  • 浏览: 164303 次
社区版块
存档分类
最新评论

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

阅读更多

传递依赖是maven最有特色的、最为方便的优点之一,可以省了很多配置。如a 依赖 b,b 依赖c  默认 a也会依赖 c。但 也会带来隐患,如版本冲突。当然maven也考虑到解决办法,可以使用exclusions来排除相应的重复依赖。

但是我们还会遇到一个严重的问题,那就是,我怎么知道是哪个包的传递依赖产生的冲突 ?那该怎么办呢?当然,maven也会有相应的解决方案。

 首先,你要在pom.xml中加上maven-project-info-reports-plugin插件。

<reporting>
  <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>
     maven-project-info-reports-plugin
    </artifactId>
   </plugin>
 </reporting>

 然后再执行:mvn project-info-reports:dependencies 。生成项目依赖的报表,这样你就能够在报表中找出你版本冲突的相关性依赖了。

最后在相应的dependency中加上exclusions来排除相关的传递依赖。

例:

              <dependency>
                        <groupId>jaxen</groupId>
                        <artifactId>jaxen</artifactId>
                        <version>1.1.1</version>
                        <exclusions>
                                <exclusion>
                                        <groupId>com.ibm.icu</groupId>
                                        <artifactId>icu4j</artifactId>
                                </exclusion>
                        </exclusions>
                        <scope>runtime</scope>
                </dependency>

4
0
分享到:
评论

相关推荐

    多种方法解决Maven Jar包冲突引入后报错问题.docx

    其实以上问题的根源都来自于Maven的Jar包冲突和使用不当的依赖传递。这篇文章我就好好分析下以下3个内容: 依赖传递的原则和产生Jar包冲突的原理分析 定位冲突以及解决Jar包冲突的几个简单技巧 如何写一个干净...

    maven_部分_源码和思维导图

    01课_maven_初步02课_maven_初步_思路讲解和archetype的使用和eclipse的安装03课_maven_依赖_环境搭建和依赖的范围04课_maven_依赖_传递性依赖的冲突的问题

    尚硅谷Java视频教程_Maven视频

    · 01....依赖的传递性 · 28.依赖的排除 · 29.依赖的原则说明 · 30.依赖的原则测试 · 31.统一管理依赖的版本号 · 32.继承 · 33.聚合 · 34.Web工程的自动部署 · 35.查找依赖信息的网站

    mabel:Bazel的Maven依赖图生成器

    产品特点从给定的Maven依赖关系列表中解决所有依赖关系,并管理版本冲突-确保依赖关系图中每个工件只有一个版本可用。 为所有远程工件生成存储库规则。 生成所需的Java规则(具有传递依赖项)。 自动检测要为给定...

    Maven权威指南 很精典的学习教程,比ANT更好用

    冲突解决 9.4.6. 依赖管理 9.5. 项目关系 9.5.1. 坐标详解 9.5.2. 多模块项目 9.5.3. 项目继承 9.6. POM最佳实践 9.6.1. 依赖归类 9.6.2. 多模块 vs. 继承 9.6.2.1. 简单项目 9.6.2.2. 多模块企业级...

    Maven指南阅读笔记

    依赖不同名称的版本——结果是classpath中出现了同样项目的两份内容。 一般来说Maven会捕捉到这种冲突并且使用该项目的一个单独的版本,但是 当artifactId和artifactId不一样的时候,Maven就会认为它们是两种不同的...

    Maven完全手册

    7. 传递依赖,简化依赖管理 这是最为方便的,可以省了很多配置。如a 依赖 b,b 依赖c 默认 a也会依赖 c。但是也会带来隐患,如版本冲突。不过maven 也已经考虑到了,可以使用exclusions来排除相应的重复依赖

    java8源码-spring-boot-demo:springboot学习的demo

    boot中的起步依赖,利用maven的依赖传递,可以更好的构建项目,不用在向spring一样,要考虑maven的依赖的版本和版本之间的兼容或者冲突。 spring boot内置Tomcat容器,不用在自己部署,部署更简单 spring boot 可以...

    Maven高级1

    1.1 分模块开发设计 1.2 分模块开发实现 1.2.1 环境准备 1.2.3 抽取Dao层 1.2.4 运行测试并总结 2.1 依赖传递与冲突问题

    Java全栈工程师-Maven基础

    本课程讲解Maven的项目构建、依赖传递、依赖冲突等本课程讲解Maven入门基础知识

    microlib:微库导入程序。 引入libbits!

    这是剪切和粘贴地狱,或传递依赖地狱。 微型库(或“libbits”,库位)试图摆脱剪切和粘贴的地狱。 微型库公开(希望)一个功能。 它不会引入项目中尚不存在的依赖项。 (不由该程序强制执行)它带有自己的测试,...

Global site tag (gtag.js) - Google Analytics