java - Java中如何处理冲突的依赖关系

标签 java maven dependencies classloader dependency-management

在我的 Java 项目中,我有两个外部依赖项 A 和 B。我将它们作为 JAR 文件放在我的构建路径中。项目A和B都有外部依赖项目C。但是它们依赖于不同版本的C。如果我使用与A兼容的版本,则B会崩溃,反之亦然。

如何处理这个问题?

最佳答案

欢迎来到依赖 hell 。

三种方法:

  1. 如果项目 A 和 B 中至少有一个是您的,您可以尝试更改代码以达到与所需版本 C 的兼容性。理想情况下,您可以将 A 和 B 都更新到最新的稳定版本C 语言并“修复”代码以使其正常工作。

  2. 如果 A 和 B 都是外部项目,您可能会尝试不同版本的 A 和 B,因为它们可能依赖于不同版本的 C。也许您会找到适用于相同 C 的组合。

  3. 使用 Maven 阴影插件构建一个阴影 jar。在这里,您修改一个 C 版本的包名称,使其独立于另一版本。

关于java - Java中如何处理冲突的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58145911/

相关文章:

java - 为什么我们需要通配符捕获?

java - 回滚问题 - Liquibase

Android Gradle 在另一个模块中包含模块依赖项

java - 从 Apache TDB 加载数据集/模型的性能问题

Java 堆已被 JDBC4PreparedStatement 填满

Java 项目变得太大

firefox - 在 Linux 上的 Jenkins 下运行的 WebDriver 测试中出现 NotConnectedException 错误

用于输出 build.Gradle 文件依赖项的 Python 脚本

javascript - onChange() 在服务器上不起作用,但在 jsfiddle 上工作正常?

java - MySql 连接器 j 允许用户变量