maven 依赖管理和传递依赖的版本更改

maven dependency managment and version change of transitive dependency

如何安全应对这样的问题:

在 Maven 中,我们有 2 个库(A 版本 20,B 版本 30)依赖于 C(分别为 1.0 和 1.1)。我们在目标库中遇到了 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版本。但是由于dependencyManagement,项目仍然使用1.1。现在有问题

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

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

没有

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