我应该增加依赖更新的主要版本吗

Should I increase major version on dependency update

我知道类似的问题已经 asked before,但出于某种原因,我在这个问题上特别包含了 maven 标签。场景:

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

semver FAQ 指出这是一个兼容的更改。它确实说 "since it does not affect the public API",但在我概述的场景中, 对依赖项的每个 更新都隐含地存在因链接错误而破坏消费者的风险。

应该D1增加主要版本吗?由于依赖模型,semver 规范的这一点是否根本不适用于 maven 项目?

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

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

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

正如您所说,这大部分是 Maven 或 Java 中依赖项工作方式的结果,但将 API 开发人员的责任限制在 public API.