`
darrenzhu
  • 浏览: 783513 次
  • 性别: 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包.
优先推荐可视化方式.
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics