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



在OSGi捆绑包中,导出和导入包都带有版本号。Still捆绑包定义了一个版本。这对我来说似乎是多余的。

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

我对这两个版本控制级别有点困惑。这两个版本号是依赖于还是独立于它们所包含的软件包版本?如果依赖,那么对捆绑包进行版本化的规则是什么?

在OSGi中,包定义了用于让bundle协作的契约。捆绑包是保存代码的JAR。

  • 包版本的目的是确保捆绑包只依赖/使用与其兼容的合同。包使用语义版本控制来表示微小、微小和重大的更改。捆绑包可以导出和导入任意数量的包,并提供和使用任意数量的合同
  • 捆绑包版本的目的是为每个JAR都有一个唯一的标识符,以便在开发生命周期中处理它。SHA代码也可以工作,但不太方便。一些组织根据捆绑包中的最高更改来调整捆绑包版本。也就是说,如果它包含的包只有微小的更改,那么这个捆绑包就会被一个微小的更改打乱。如果一个包裹发生了重大变化,那么包裹就会变得一团糟

最新更新