首页 > 解决方案 > 应该如何对相互关联的软件包进行版本控制?

问题描述

一些开源项目进行组合发布,其中每个包(库)的版本号增加到相同的版本。

Java 中的示例如下:

这意味着一些包可能会获得一个新版本,即使它们没有改变(也没有改变它们的依赖项)。我不认为这违反了语义版本控制。

我看到的好处是:

缺点:

标签: releasesemantic-versioning

解决方案


单一版本控制的一种替代方法是使用 BOM(材料清单)。存在不同的 BOM 概念:

  • BOM 可以列出几个依赖项以包含在它们的版本中(例如Linux apt Meta-packages
  • 如果包含依赖项,BOM 可以定义要使用的依赖项的版本(和其他限制)(例如dependencyManagementBOM 的 Java Maven 部分)

BOM 允许声明哪些库版本的配置(组合)已经一起测试,并允许不同的用户组都使用相同的配置,有助于错误报告和可重复性。

不过,并非所有软件分发和构建系统都同样支持 BOM 概念。


推荐阅读