【问题标题】:deploy same plug with different version部署不同版本的相同插件
【发布时间】:2015-08-05 12:09:10
【问题描述】:

我有几个插件的 osgi 项目 其中一个插件叫做:

com.lilum.sr.util

其他插件使用这个插件

插件:

com.lilum.sr.serveA

Require-Bundle: org.eclipse.core.runtime,
 com.lilum.sr.util="1.2.3"

com.lilum.sr.serveB

Require-Bundle: org.eclipse.core.runtime,
     com.lilum.sr.util="1.2.5"

如您所见,插件 com.lilum.sr.serveA 使用 com.lilum.sr.util 1.2.3 版

和插件 com.lilum.sr.serveB 使用 com.lilum.sr.util 1.2.5 版

当我部署它们时,都使用 com.lilum.sr.util highets 版本 (1.2.5) 但我想强制 com.lilum.sr.serveA 使用 com.lilum.sr.util (1.2.3)

有什么办法吗?

我也尝试使用范围版本 ([1.2.3, 1.2.4)) 但我得到错误无法解决 com.lilum.sr.util_[1.2.3, 1.2.4) 似乎osgi只部署highets版本

【问题讨论】:

  • 您使用什么构建/部署技术?也许是 Maven,作为一个独立的应用程序或 WAR?

标签: java osgi osgi-bundle


【解决方案1】:

在 OSGI 中,版本的第三部分标识“服务”或“补丁”版本。只有第一个和第二个标识 API 何时更改。因此,OSGI 可能会将您的两个捆绑包视为 API 中的等效包,并选择两者中的“更好”:应用了更多补丁的那个。

您应该更新主要或次要版本号,以表明对您的捆绑包进行了 API 修改,然后它应该可以正常工作。如果您没有 API 更改但只有实现细节更改,并且在您的两个捆绑包中其他所有内容都相同,那么应该没有理由使用具有较低第三部分的那个。

另见https://wiki.eclipse.org/Version_Numbering

此外,如果您的包包含要求它是系统单例的元数据,那么您将无法在 OSGI 运行时中包含多个。

【讨论】:

  • 我在“com.lilum.sr.util”上没有单例(我在 com.lilum.sr.serveA 上有单例=true)并且我已经尝试更改次要版本号但仍然存在同样的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
  • 2018-10-31
  • 1970-01-01
  • 2013-05-15
  • 2015-08-22
  • 2019-04-15
  • 1970-01-01
相关资源
最近更新 更多