应如何对相互关联的软件包进行版本控制?

问题描述 投票:0回答:1

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

Java中的示例是:

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

这意味着某些软件包可能会获得新版本,即使它们没有更改(也不是它们的依赖项)。我不认为这违反了语义版本。

我看到的好处是:

  • 用户可以使用单个版本进行监控和升级
  • 所有用户都可能使用相同的库组合

缺点:

  • 虽然要下载的程序包没有更改,但是只使用多个库中的一个的用户可能会收到有关“更新”的通知
  • 如果许多用户只使用子包,那么一个版本的所有错误报告对于一系列版本都是相同的,这很难跟踪。恢复到以前的“不同”版本以避免错误变得更加复杂。
release semantic-versioning
1个回答
0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.