Karaf交换机依赖捆绑版本,无需重新编译或上传捆绑

时间:2014-11-17 20:56:32

标签: osgi apache-karaf osgi-bundle

我已将多个捆绑包部署到我的Karaf容器中。依赖性graf可能看起来那样

    A-1.0
     / \
    /   \
B-1.0   C-1.0

B和C捆绑包都在寻找捆绑包A的最新版本。 部署到生产后,我意识到捆绑A中的某些接口必须改变。我想只有捆绑B知道这个变化。捆绑C必须保持原样。图表会比我的英文好。

我想实现类似的目标:

A-1.1    A-1.0
  |        |
B-1.1    C-1.0  

我想知道是否有类似外部配置文件的东西可以帮助或者更好的东西。

1 个答案:

答案 0 :(得分:2)

除非您使用Require-Bundle(通常不应该这样做),否则捆绑包不依赖于捆绑包。它的包依赖于其他包。因此,对于我的答案的其余部分,我将假设您的捆绑包B和C从A导入一些包。

第一个问题是,他们导入的版本范围是什么?

如果它们都导入[1.0,2](如果他们使用A中的服务这是很正常的话)那么你将无法达到你所描述的效果。

你可以让C导入一个严格的范围,比如[1.0,1.1],然后你的场景就可以了。

我真的很想知道你为什么要做你所描述的事情。如果您正确应用语义版本控制(如OSGi白皮书中所述),则捆绑A的1.0到1.1的更新意味着它应该向后兼容。因此B和C可以使用A版本1.1而没有任何问题。你能详细说明一下吗?