`
darrenzhu
  • 浏览: 806934 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Maven 重复依赖检测 (Dependency Convergence), 包冲突解决

阅读更多

方法一
maven命令方式
详情参考:
https://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html

This rule requires that dependency version numbers converge. If a project has two dependencies, A and B, both depending on the same artifact, C, this rule will fail the build if A depends on a different version of C then the version of C depended on by B.

简单的说就是,如果你的project依赖两个第三方jar包,分别称作A和B,而A又依赖spring2.5, B却依赖spring3.0, 那么如果你配置了这个规则,maven build就会失败并且报错,让你自己先解决这个包冲突.

我个人认为这个挺有用的,当你在本地Tomcat跑起来没问题,发布到服务器WebSphere却挂了时,最后调试1天才解决包冲突问题,是很郁闷的.


加入下面的插件到pom.xml即可启用该功能
<project>
  ...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.3.1</version>
        <executions>
          <execution>
            <id>enforce</id>
            <configuration>
              <rules>
                <DependencyConvergence/>
              </rules>
            </configuration>
            <goals>
              <goal>enforce</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>



方法二
可视化方式,m2Eclipse插件提供的Maven Pom Editor功能
Eclipse Marketplace搜索Maven Integration for Eclipse, install后即可使用.

双击pom.xml后在Dependency Hierarchy面板里面可以查看有冲突的jar包.
优先推荐可视化方式.
分享到:
评论

相关推荐

    Maven离线依赖包v2

    2. 版本兼容性:需要确保离线包中的依赖版本与项目POM.xml中声明的版本匹配,否则可能会出现版本冲突。 3. 缺少依赖:如果项目需要的某个特定版本不在离线包中,仍需网络下载。 在实际开发中,为了更好地利用Maven...

    maven 中引入依赖的包

    这在排查依赖冲突或理解项目依赖关系时非常有用。 除了Maven的默认仓库外,还可以通过`&lt;repository&gt;`标签添加自定义的远程仓库地址,这对于处理公司内部私有库或者第三方库的非中央仓库发布的情况非常关键。 在...

    maven_package 依赖包(完整)

    6. **依赖冲突解决**:Maven采用"最接近原则"解决依赖冲突,即当两个或更多依赖引入相同jar的不同版本时,会选择离当前模块最近的版本。 7. **聚合与继承**:聚合(aggregation)允许一个项目包含其他项目,而继承...

    maven依赖+继承+聚合

    通过理解并灵活运用Maven的依赖、继承和聚合,开发者可以更高效地管理复杂的项目结构,减少重复工作,提高开发效率。在实际项目中,合理使用这三个特性,可以使代码组织更加清晰,项目维护更加容易。在这个名为...

    Maven的依赖验证项目

    在进行依赖验证时,Maven的`dependency:tree`命令可以帮助我们可视化项目的依赖结构,查找潜在的冲突。此外,`dependency:analyze`插件可以分析未使用和缺失的依赖,帮助优化项目配置。 在压缩包中的“Maven依赖...

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

    总结来说,解决Maven依赖冲突需要深入理解Maven的依赖管理和类加载机制。在本案例中,通过修改冲突依赖的类路径,可以实现多版本依赖的共存,但这种方式并不适用于所有场景,因此在实际应用中应谨慎考虑。在可能的...

    maven 隐式依赖引起的包冲突解决办法

    4. **升级或降级冲突的依赖**:如果可能,可以尝试更新到冲突包的最新版本,或者降级到所有依赖都能兼容的旧版本。 5. **使用Maven的`force`属性**:在某些情况下,可能需要强制使用特定版本的依赖,即使这可能导致...

    Maven的Dependency测试

    当多个依赖有相同的`groupId`和`artifactId`但不同版本时,Maven会根据`dependencyManagement`来解决冲突。 4. **测试框架集成** Maven支持与JUnit、TestNG等测试框架集成,通过`maven-surefire-plugin`插件运行...

    IntelliJ IDEA 批量导出Maven项目依赖的jar包.docx

    ### IntelliJ IDEA 批量导出Maven项目依赖的jar包 #### 一、背景与目的 在Java开发过程中,我们经常需要使用各种第三方库或框架,这些通常是以jar包的形式存在。为了方便项目的构建和部署,我们需要将这些依赖的jar...

    maven依赖小例子

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

    Maven引入本地Jar包并打包进War包中的方法

    "Maven引入本地Jar包并打包进War包中的方法" Maven是一种流行的项目管理工具,主要用于Java项目的构建、测试和部署。在实际开发中,我们经常需要引入本地Jar包以满足项目的需求。本文将介绍Maven引入本地Jar包并...

    springboot maven 依赖包3

    springboot 的maven依赖包,含有所有maven依赖,网络不好的可以来下。压缩包3.

    Maven中的依赖

    如果有版本冲突,Maven会根据依赖管理的原则进行解决,通常遵循“最近优先”原则。 5. **仓库**:Maven依赖的存储库,包括本地仓库(默认在用户目录下)和远程仓库(如中央仓库mvnrepository.com)。当本地仓库没有...

    检测工具 jar包冲突

    在具体操作中,`jarsTool`可能是一个用于检测jar包冲突的工具,它可以扫描项目中的所有jar文件,列出重复的类,帮助定位冲突。使用此类工具,开发者可以更直观地看到哪些类或包存在冲突,并据此进行调整。 总的来说...

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

    ### Maven 类包冲突终极解决技巧详解 在软件开发过程中,Maven 作为一款流行的构建工具,在项目管理和构建自动化方面发挥着重要作用。然而,对于新手而言,Maven 的复杂性和广泛的功能可能会让人感到困惑,尤其是在...

    IDEA最新版2020.1的maven工程本地依赖仓库无法使用问题(已解决)

    "IDEA最新版2020.1的maven工程本地依赖仓库无法使用问题解决方案" 本文主要介绍了IDEA最新版2020.1的maven工程本地依赖仓库无法使用问题的解决方案。这篇文章详细介绍了 IDEA最新版2020.1的maven工程本地依赖仓库...

    Maven离线依赖包v1

    总之,"Maven离线依赖包v1"是为了在离线环境中解决Java项目依赖问题的一个解决方案,它提供了大量的库文件,便于开发者在没有网络的情况下也能进行正常的开发工作。正确配置和使用离线依赖包,可以极大地提高开发...

    maven-dependency-plugin-2.8.zip

    在版本2.8中,它提供了许多实用的功能,比如解决复杂依赖树中的版本冲突,或者在构建过程中验证是否存在未使用的依赖,从而优化项目的构建过程。 具体到"Maven-cobertura-checker",这是一个用于Cobertura集成的...

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

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

Global site tag (gtag.js) - Google Analytics