清理jar冲突



在我们的项目中,我想删除运行时可能出现的所有潜在jar冲突。我们的堆栈太大了,不同的依赖关系带来了相同的jar。问题是,在新的部署之后,每个依赖项都会引入同一个jar的不同版本,并导致问题。

我从哪里开始?有什么maven插件可以解决这个问题吗?任何关于这方面的帮助或建议都会得到充分的评价。

您可以按如下方式使用maven-enforcer-plugin

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-enforcer-plugin</artifactId>
    <version>1.3.1</version>
    <configuration>
        <fail>true</fail>
        <rules>
            <dependencyConvergence/>
        </rules>
    </configuration>
    <executions>
        <execution>
            <id>enforce-dependencies</id>
            <goals>
                <goal>enforce</goal>
            </goals>
        </execution>
    </executions>
</plugin>

当存在冲突的依赖项时,这将停止生成。

一个方便的工具:JHades。简而言之,它是一个有助于Jar依赖地狱的工具。就其本身而言,它是一个除了JDK之外没有任何依赖项的Jar。它可以用于发现容易的冲突和调试更严重的问题。示例:

new JHades()
  .printClassLoaders()
  .printClasspath()
  .overlappingJarsReport()
  .multipleClassVersionsReport()
  .findClassByName("org.jhades.SomeServiceImpl")

打印类加载器链、jar、重复类。。。

最新更新