2017-06-22 40 views
0

我已经创建了一个OSGI包A和一个jar B,A依赖于B. 我也在Karaf 4.1.1上成功部署了A和B. B被部署为包装的Maven jar(bundle:install -s mvn:....)。在Apache Karaf中更新包Maven jar的正确方法是什么?

现在B有一些变化,所以我已经将它重新部署到我们的Nexus服务器中,我也想将新B部署到Karaf中。

但我发现,如果我只在Karaf更新B,A仍然使用老B,甚至我有重启A. 我必须卸载并重新安装b键使使用新的B.

因为B是一个通用的库,所以会有很多其他的bundle依赖于B. 而B也被我们其他的非OSGI应用程序所使用,所以我不想把它作为OSGI捆绑。

这是正确的方式来更新卡拉夫包裹Maven罐子? 还是有什么建议?

回答

1

该问题与“包装组件”无关。使用wrap协议安装后,jar被认为是正常的OSGI包。

但是,请记住,卡拉夫手表只改变从SNAPSHOT捆绑

所以:

  • 在你DEVELOPPEMENT ENVIRONNEMENT,叠B可以是快照版本。因此,您可以立即观看您的更改(只需确保在您的karaf命令行中点击软件包即可观看*)。捆绑检测B的变化也立即。

  • 在您的生产环境中,捆绑包B必须处于发布版本。因此,要在B中部署新更改,必须安装新版本并删除旧版本。

    如果你想告知B有两个不同版本的部署,并强制使用新版本,您可以通过修改导入包这样做出一些改变成捆答:

    ... 
    bundle_B_package*;version="[bundle_B_new_version,bundle_B_new_version + 1)", 
    ... 
    

在这里,我们采用语义版本:)

+0

酷,感谢您的帮助! –

相关问题