我正在寻找一种方法来确保我在Karaf中部署的所有功能都需要具有相同版本的依赖项。该项目由40多个捆绑组成,这使得难以手动验证。
我正在考虑开发一个可以进行检查的Maven插件,但在此之前我想确定这样的解决方案还不存在。
答案 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将确保您的捆绑软件连接到允许范围内的软件包版本。显然,如果您有来自不同导入者的非重叠版本范围,那么框架将无法通过单个导出器来满足它们。