首页 > 解决方案 > maven依赖管理及传递依赖的版本变更

问题描述

如何安全地处理这样的问题:

在 Maven 中,我们有 2 个依赖于 C(分别为 1.0 和 1.1)的库(A 版本为 20,B 版本为 30)。我们在目标库中得到 jar hell

*--A20--C1.0
\--B30--C1.1

然后我添加dependencyManagment 部分并将C 版本强制为1.1。它按预期工作。

*--A20--C1.1 (not C1.0)
\--B30--C1.1

几个月后,我们决定将 A 升级到 50 版。现在它依赖于 C 2.0 版。但是由于依赖管理,项目仍然使用 1.1。现在是个问题

*--A50--C1.1 (not C2.0 as needed)
\--B30--C1.1

问题是:是否可以覆盖传递依赖,并且只有当传递依赖的版本与我们设置的版本匹配时,这种覆盖才会起作用?否则这个覆盖将被忽略,我们会看到一个错误(例如,在 maven-enforcer 插件的帮助下)我想知道我们是否有一些插件来检查这种情况?

标签: javamavendependency-managementtransitive-dependency

解决方案


不。

我了解您的用例,但我在 Maven 中看不到任何东西可以产生您想要的结果。


推荐阅读