我已将多个捆绑包部署到我的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
我想知道是否有类似外部配置文件的东西可以帮助或者更好的东西。
答案 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而没有任何问题。你能详细说明一下吗?