java - 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 插件的帮助下)我想知道我们是否有一些插件来检查这种情况?
解决方案
不。
我了解您的用例,但我在 Maven 中看不到任何东西可以产生您想要的结果。