我如何使用osgi捆绑中不可用作jar的jar?

时间:2012-09-18 08:38:32

标签: osgi

我正在将我的spring-java项目移动到osgi。

我有一些依赖项,这些依赖项在spring ebr repo或maven repo中不能作为bundle使用。 处理它们的最佳方法是什么?

我能想到的选项是

  1. 创建一个本地maven repo,将jar转换为bundle并使用它们(这将通过jar的传递依赖和更新变得困难)
  2. 将它们添加到捆绑类路径中(我的捆绑包变得庞大,升级后管理这些罐子并不容易)
  3. 将所有这些罐子保存在另一个包的类路径中,导出包并使用它们(再次管理罐子很困难)
  4. 是否有其他建议或上述哪些建议?

2 个答案:

答案 0 :(得分:4)

最明智的方法是你的第一个选择,因为这是'OSGi方式'。这样,您可以更好地模块化应用程序并在不同的客户端软件包中共享相同的软件包。您还可以从OSGi中固有的版本管理中受益。

您不一定要使用Maven从JAR创建捆绑包,尽管这可能会有所帮助。您还可以使用bnd将JAR包装为OSGi包。

答案 1 :(得分:0)

如果你使用apache karaf,可以选择在maven仓库中捆绑任何jar。 您只需使用uri install -s wrap:mvn:groupId / artifactId / version。这将使用bnd将jar与默认设置捆绑在一起并安装它。这适用于例如oracle jdbc驱动程序。