java - 冲突的传递依赖项是 Maven 中的一个严重问题吗?

标签 java maven clojure dependencies dependency-management

我有一个项目 X,它在依赖层次结构中显示了很多相互冲突的依赖关系(如 Eclipse 的依赖层次结构 View 中所示)。我看到很多这样的事情:

clojure: 1.3.0 (omitted for conflict with 1.4.0) [compile]

这通常是因为 X 使用的两个库指定了其他库的两个不同版本 - 即由于共享传递依赖性而发生冲突。在很多情况下,冲突发生在我无法直接控制的第 3 方库中。

幸运的是,现在一切都构建并运行良好,但我担心这种情况是否会在未来造成问题。

这是我应该担心的问题吗?如果是,我应该怎么做?

最佳答案

是的,这样的冲突可能很严重。

当比较一个版本与另一个版本时,您不知道依赖项中是否存在不兼容的更改(比较次要版本时不应该有,但谁知道呢?)。或者也许某些依赖依赖于另一个依赖的错误行为。如果此错误已修复怎么办?依赖于错误的那个模块将无法正常执行。

您应该排除冲突的依赖项(更有可能排除较低版本)。对于您输入的每个排除项,您必须检查排除的版本和现在使用的版本之间是否存在不兼容的更改。如果是这种情况,您必须检查依赖于该模块的依赖项,看它们是否受到此类更改的影响。

关于java - 冲突的传递依赖项是 Maven 中的一个严重问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13026332/

相关文章:

java - Libgdx 如何设置PerspectiveCamera的渲染距离?

java - 如何在java项目中使用commited库

clojure - lein repl zip 文件为空异常

javascript - Clojurescript、JavaScript、SVG、图表、图形

java - 在java Android Studio中将数据从保存数组数据的字符串加载到字符串数组

java - Jnlp 文件未在 Internet Explorer 浏览器中下载

Java MongoDB 类 NotFoundException : org. springframework.data.convert.CollectionFactory

function - Clojure 中是否有标准的参数序列标识函数?

java - Nexus 在启动时挂起

java - 我的 fat jar 与Hadoop中的.jars冲突