Java 干净的罐子冲突

Java 干净的罐子冲突,java,maven,maven-2,maven-3,maven-plugin,Java,Maven,Maven 2,Maven 3,Maven Plugin,在我们的项目中,我希望删除运行时可能出现的所有潜在jar冲突。我们的堆栈太大了,不同的依赖项带来了相同的jar。问题是,在重新部署之后,每个依赖项都会引入同一jar的不同版本,并导致问题 我从哪里开始?有没有maven插件可以解决这个问题? 关于这方面的任何帮助或提示都非常有用。您可以使用maven enforcer插件,如下所示: <plugin> <groupId>org.apache.maven.plugins</groupId> <

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

我从哪里开始?有没有maven插件可以解决这个问题?
关于这方面的任何帮助或提示都非常有用。

您可以使用
maven enforcer插件,如下所示:

<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>

org.apache.maven.plugins
maven enforcer插件
1.3.1
真的
强制依赖关系
执行

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

您可以使用
maven enforcer插件,如下所示:

<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>

org.apache.maven.plugins
maven enforcer插件
1.3.1
真的
强制依赖关系
执行
当存在冲突的依赖项时,这将停止生成。

一个方便的工具:。简而言之,它是一个帮助处理Jar依赖关系的工具。它本身就是一个Jar,除了JDK之外,没有任何依赖项。它可以用来发现容易的冲突和调试更严重的问题。例如:

new JHades()
  .printClassLoaders()
  .printClasspath()
  .overlappingJarsReport()
  .multipleClassVersionsReport()
  .findClassByName("org.jhades.SomeServiceImpl")
打印类装入器链、JAR、重复类,…

一个方便的工具:。简而言之,它是一个帮助处理Jar依赖关系的工具。它本身就是一个Jar,除了JDK之外,没有任何依赖项。它可以用来发现容易的冲突和调试更严重的问题。例如:

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

打印类装入器链、JAR、重复类等

您可以使用mvn tree:Dependency查看哪些JAR包含在其他Dependencies中的不同版本中,并将其从Dependency中排除这是解决需要立即关注的问题的一种方法。但正如我所说的,这个项目太大了,我无法手动清理每个依赖项。您可以使用mvn tree:dependency查看哪些JAR包含在其他依赖项的不同版本中,并将其从依赖项中排除。这是解决需要立即关注的问题的一种方法。但正如我所说的,这个项目太大了,我不能手动去清理所有这样的依赖项。