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 中看不到任何东西可以产生你想要的结果。
如何安全应对这样的问题:
在 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 中看不到任何东西可以产生你想要的结果。