首页 > 解决方案 > 我应该增加依赖更新的主要版本吗

问题描述

我知道之前有人问过类似的问题,但我特意maven在这个问题上加上了标签是有原因的。设想:

maven 依赖模型规定,由于P'pom.xml明确声明了D2依赖关系,因此将使用来自 pom 的版本。P由于传递依赖的不兼容更改,这会导致链接错误中断。

semver FAQ声明这是一个兼容的更改。它确实说“因为它不影响公共 API”,但在我概述的场景中,对依赖项的每次更新都隐含着因链接错误而破坏消费者的风险。

应该D1增加主要版本吗?由于其依赖模型,这部分 semver 规范是否根本不适合 maven 项目?

标签: javamavencompatibilitybackwards-compatibilitysemantic-versioning

解决方案


更改是否兼容,在这种情况下,完全取决于 API使用者如何使用它,这超出了 API 开发人员的责任范围。

D1's 的开发人员而言,公共 API 保持不变,而且,IMO 声明这不是重大更改是正确的。

如果使用的应用程序D1直接使用D2,因为它恰好是编译范围的依赖项,那么这完全是消费者的责任。如何?消费者无论如何都可以排除传递依赖并用不同的版本替换它,并且多个消费者以不同的方式管理传递依赖。

正如您所说,这大部分是依赖关系在 Maven 或 Java 中如何工作的结果,但是将 API 开发人员的责任限制在公共 API 上是明智的。


推荐阅读