`

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

 
阅读更多

 


传递依赖是maven最有特色的、最为方便的优点之一,可以省了很多配置。如a 依赖 b,b 依赖c  默认 a也会依赖 c。但是 也会带来隐患,如版本冲突。当然maven也考虑到解决办法,可以使用exclusions来排除相应的重复依赖。
但是我们还会遇到一个严重的问题,那就是,我怎么知道是哪个包的传递依赖产生的冲突 ?那该怎么办呢?当然,maven也会有相应的解决方案。
首先,你要在pom.xml中加上maven-project-info-reports-plugin插件。
Xml代码 复制代码 收藏代码
  1. <reporting>  
  2.   <plugins>  
  3.    <plugin>  
  4.     <groupId>org.apache.maven.plugins</groupId>  
  5.     <artifactId>  
  6.      maven-project-info-reports-plugin   
  7.     </artifactId>  
  8.    </plugin>  
  9.  </reporting>  
<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来排除相关的传递依赖。
例:
Xml代码 复制代码 收藏代码
  1. <dependency>  
  2.           <groupId>jaxen</groupId>  
  3.           <artifactId>jaxen</artifactId>  
  4.           <version>1.1.1</version>  
  5.           <exclusions>  
  6.                   <exclusion>  
  7.                           <groupId>com.ibm.icu</groupId>  
  8.                           <artifactId>icu4j</artifactId>  
  9.                   </exclusion>  
  10.           </exclusions>  
  11.           <scope>runtime</scope>  
  12.   </dependency>  
              <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>
分享到:
评论

相关推荐

    ​实现maven项目中多版本依赖兼容使用解决方案

    依赖冲突通常发生在两个或更多库使用相同类的不同版本时,Maven默认会选择最高版本的依赖,但这可能导致运行时错误或不兼容性。在本案例中,公司需要使用一个第三方接口的加密jar包,该jar包内部依赖的高版本与现有...

    Maven传递依赖和依赖的规则.docx

    **一、Maven传递依赖** 传递依赖是指在Maven项目中,当一个项目A依赖于另一个项目B,而项目B又依赖于项目C时,项目A间接地依赖于项目C。这种关系使得A可以通过B来间接获取到C的类和资源。但是,并非所有的传递依赖...

    Maven的依赖验证项目

    Maven的依赖机制遵循“传递性”原则,这意味着如果你的项目依赖A,而A又依赖B,那么Maven会自动将B也引入到你的项目中。但是,这可能导致版本冲突,因此Maven提供了`exclusions`标签来排除不需要的依赖。 在进行...

    试试 IDEA 解决 Maven 依赖冲突的高能神器.docx

    依赖冲突源于Maven的传递性依赖和“最近优先”策略。当一个项目间接依赖了不同版本的同一个库时,就会出现冲突。例如,如果项目直接依赖A和B,而A需要C1版本,B需要C2版本,Maven会优先选择路径较短的依赖,即距离...

    maven依赖小例子

    这大大简化了项目的构建过程,但同时也可能导致依赖冲突,需要通过排除机制或调整依赖版本来解决。 在`&lt;dependency&gt;`标签内,还可以添加`&lt;exclusions&gt;`子标签来排除特定的依赖,避免冲突。例如: ```xml ...

    maven历史版本下载

    3. **依赖管理**:3.5.2增强了依赖解析机制,能更准确地处理传递性依赖,避免了版本冲突。 4. **错误修复**:此版本修复了多个已知问题,提升了Maven的稳定性和可靠性。 要下载Maven的历史版本,可以访问Apache ...

    Maven 依赖详细理解.pdf

    依赖调解是Maven解决依赖冲突的机制。当一个项目中引入了两个具有相同坐标但版本不同的依赖项时,Maven会根据一定的规则选择其中一个版本。Maven的依赖调解规则包括:短距离优先原则和声明优先原则。短距离优先原则...

    MavenHelper插件 帮你检查maven的各种冲突

    这款插件专为IntelliJ IDEA设计,旨在帮助开发者轻松解决Maven依赖冲突问题,提高开发效率。 **MavenHelper插件介绍** MavenHelper是一款强大的IDEA插件,它的主要功能是分析和可视化Maven项目的依赖树,帮助开发者...

    Maven类包冲突终极解决小技若干

    Maven 类包冲突是开发过程中常见的问题之一,但通过上述方法的应用,大多数冲突都可以得到有效解决。开发者应根据实际情况灵活运用这些技巧,以提高项目的稳定性和可维护性。随着经验的积累,处理这类问题也将变得...

    Maven仓库(3.8.6版本)

    - **更好的依赖解析**:优化了依赖管理机制,避免了依赖冲突,使得依赖关系更加清晰。 - **安全性增强**:加强了对HTTPS连接的支持,提升了数据传输的安全性。 - **插件管理**:3.8.6版本改进了插件的管理和执行,使...

    apache-maven3.5 依赖包

    2. **理解依赖传递性**:Maven会自动处理依赖的依赖,但可能会导致依赖冲突,需要通过 `&lt;exclusions&gt;` 标签排除不需要的子依赖。 3. **管理本地仓库**:定期清理无用的旧版本依赖,避免仓库过大影响性能。 4. **使用...

    Maven依赖管理项目构建工具.pdf

    2. Maven依赖冲突特性 当不同依赖引入了相同但不同版本的库时,会产生依赖冲突。Maven遵循“nearest wins”原则解决冲突,但可能需要手动调整。 七、Maven工程继承和聚合关系 1. Maven工程继承关系 一个父pom可以...

    maven3.0版本下载

    在依赖管理方面,Maven3.0引入了更精确的依赖解析策略,能够更好地处理传递性依赖。当存在多个版本的同一个库时,Maven3.0能根据“最接近声明”原则选择正确的版本,避免了版本冲突。同时,它还提供了依赖树命令,...

    Maven版本管理

    4. **版本冲突解决**:当项目中存在多个相同groupId和artifactId但版本不同的依赖时,Maven会根据其依赖解析策略来解决冲突。默认策略是“最接近原则”,优先使用直接依赖的版本,而非间接依赖的版本。 5. **生命...

    Maven 3.5.0版本资源

    2. **依赖管理**:该版本加强了依赖解析,减少了因为依赖冲突导致的问题。它能更准确地解决传递性依赖,同时提供更好的依赖排除策略。 3. **插件管理**:Maven 3.5.0对插件管理进行了改进,支持更灵活的插件版本...

    MavenHelper

    "MavenHelper"是一款针对IntelliJ IDEA开发的高效Maven插件,它的主要功能在于帮助开发者快速定位和解决Maven项目中的依赖冲突问题。在Java开发中,Maven作为主流的构建工具,其依赖管理是项目构建的重要环节。然而...

    maven3.6.2版本

    它增强了对传递性依赖的处理,可以自动解决版本冲突,减少了手动调整依赖版本的需要。同时,新的版本也加强了对本地仓库的管理,使得库文件的存储和检索更加高效。 在插件方面,Maven 3.6.2支持了更多的插件和更新...

Global site tag (gtag.js) - Google Analytics