确保bundle使用相同的依赖版本

时间:2015-08-07 11:58:47

标签: maven osgi karaf

我正在寻找一种方法来确保我在Karaf中部署的所有功能都需要具有相同版本的依赖项。该项目由40多个捆绑组成,这使得难以手动验证。

我正在考虑开发一个可以进行检查的Maven插件,但在此之前我想确定这样的解决方案还不存在。

2 个答案:

答案 0 :(得分:1)

如果您想确保使用相同的版本,则创建父项目并仅在那里定义依赖项的版本。因此,您可以确保所有模块具有相同的依赖关系。当然,只有所有这些模块密切相关(例如属于相同的应用程序/发布单元)才有意义。

答案 1 :(得分:1)

为什么你甚至想要这样做?每个bundle应该依赖于它所需的包的版本,并且该依赖应该是一个范围。因此,如果您针对API包版本1.0.0进行编译,并且您是该API的使用者,那么您应该使用范围[1.0.0, 2.0.0)进行导入。有关详细信息,请参阅OSGi Core Release 5规范,第3.7.3节("语义版本控制")。

在运行时,OSGi Framework将确保您的捆绑软件连接到允许范围内的软件包版本。显然,如果您有来自不同导入者的非重叠版本范围,那么框架将无法通过单个导出器来满足它们。