清理jar冲突

时间:2016-04-12 08:10:07

标签: java maven maven-2 maven-3 maven-plugin

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

我从哪里开始?有没有maven插件来解决这个问题? 任何有关这方面的帮助或指示都非常适合。

2 个答案:

答案 0 :(得分:2)

您可以按如下方式使用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>

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

答案 1 :(得分:1)

一个方便的工具:JHades。简而言之,它是一个有助于Jar依赖Hell的工具。除了JDK之外,它本身就是一个没有依赖关系的Jar。它可用于发现轻松冲突并调试更严重的问题。例如:

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

打印类加载器链,jar,重复类,...

相关问题