相互关联的软件包应如何版本化?

时间:2019-02-01 07:29:06

标签: release semantic-versioning

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

Java中的示例为:

  • org.springframework
  • com.fasterxml.jackson
  • org.hamcrest

这意味着某些软件包即使没有更改(也没有依赖性)也可能获得新版本。我认为这不违反语义版本控制。

我看到的好处是:

  • 用户可以使用一个版本来监视和升级
  • 所有可能使用相同库组合的用户

缺点:

  • 尽管要下载的软件包没有更改,但可能会向仅使用多个库中一个库的用户通知“更新”
  • 如果许多用户仅使用一个子软件包,则一个版本的所有错误报告都等同于一系列版本,这很难跟踪。恢复到以前的“不同”版本以避免错误变得更加复杂。

1 个答案:

答案 0 :(得分:0)

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

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

BOM可以声明一起测试过的库版本的配置(组合),并允许单独的用户组都使用相同的配置,从而有助于错误报告和可重复性。

但是,并不是所有的软件发行版和构建系统都对BOM概念同样支持。