绑定OSGi相关库的标准方式是什么?

我有一个项目引用了一些开源库,一些新的,有些不是那么新。 也就是说,它们都是稳定的,我希望坚持使用我选择的版本,直到我有时间迁移到新版本(我昨天测试了hsqldb 2.0并且它包含许多api更改)。

我希望嵌入的一个图书馆是Jasper Reports,但正如你们都知道的那样,它附带一大堆支持jar文件,我只需要山的一个子集(已知),因此我计划定制捆绑所有我的依赖库。

所以:

  • 是否每个人都为自己使用的开源库定制自己的OSGi包,或者是否有OSGi版本的公共库的主要来源?

  • 另外,我在想,对于我的每个bundle来说,简单地将它们的依赖jar包嵌入bundle中会简单得多。 这可能吗? 如果我选择将第三方foc库嵌入到一个包中,我假设我需要生成2个jar文件,一个没有嵌入式库(用于通过classpath通过标准类加载器加载库)以及一个包含osgi版本嵌入式库,因此我应该选择一个像这样的名称“myprojectname” - “子项目” - osgi-.1.0.0.jar?

  • 如果我无法嵌入开源库并选择定制绑定开源库(通过bnd),我应该选择唯一的软件包名称以避免与可能的官方软件包发生冲突吗? 例如<< myprojectname >> - << 3rdpartylibname >> - << 3rdpartylibversion >>。jar?

  • 我的非OSGi启用的项目目前通过Service.providers(...)通过扫描我的各种插件jar中的META-INF文件夹来扫描自定义插件。 如果我去OSGi,这个机制还能工作吗?


  • 我更喜欢不嵌入依赖的罐子(是的,这是可能的)。 它造成两个问题,

    1)这个代码没有重用。 许多捆绑包可能只是做同样的事情(嵌入相同的jar),你最终会安装多次安装相同的jar。 你可以争辩说你的包也可以为嵌入式jar导出接口,但这会变得很难看,因为暴露该代码不应该是你的包的责任。 它还使得多个版本的库可以更容易地公开,或者同一版本的多个提供者更容易。

    2)这是Eclipse特有的 - 嵌入式jar在开发环境中无法正确解析(仍然在运行时工作)。 我的包可能依赖于目标平台中的包,并且它将无法解析嵌入式jar中的元素,它们必须导入到工作区才能工作。

    我发现大多数开源的罐子已经被春天的好人捆绑在一起。 还有其他回购协议,但不幸的是我失去了与他们的链接。


    也许你正在寻找像Maven这样的东西? 不知道如何与OSGi一起工作。 你可以在这里找到关于Jasper Reports的信息:http://mvnrepository.com/artifact/jasperreports/jasperreports


    Eclipse Orbit项目也制作了许多常用的第三方jar包。

    http://www.eclipse.org/orbit/

    链接地址: http://www.djcxy.com/p/74747.html

    上一篇: What is the standard way to bundle OSGi dependent libraries?

    下一篇: Enable JSP support in jetty '9.2.9.v20150224'