OSGi中包和bundle版本之间的关系是什么

时间:2013-12-09 08:37:20

标签: osgi versioning

在OSGi包中,使用版本号导出和导入包。仍然捆绑包已定义版本。这对我来说似乎是多余的。

对软件包及其中包含的软件包进行版本控制有什么意义?我知道bundle / jar可能会在非OSGi系统中使用它(例如,对于maven)。还有其他原因吗?

我对这两个版本的版本感到有点困惑。这两个版本号是否依赖于或独立于它们包含的软件包版本?如果依赖,那么捆绑软件的版本规则是什么?

1 个答案:

答案 0 :(得分:3)

在OSGi中,包定义用于让bundle进行协作的合约。 Bundles是保存代码的JAR。

  • 软件包版本的目的是确保软件包仅依赖/使用与它们兼容的合同。软件包使用语义版本控制来发出微小,微小和重大变化的信号。捆绑包可以导出和导入任意数量的包,并提供和使用任意数量的合同。
  • 捆绑版本的目的是为每个JAR提供唯一标识符,以便在开发生命周期中对其进行处理。 SHA代码也可以使用,但不太方便。一些组织根据其任何软件包中的最高更改来破坏软件包版本。即如果它所包含的包只有微小的变化,那么捆绑将受到轻微的改变。如果一个软件包有一个重大变化,那么这个软件包就会被填充为主。