如何编译osgi中的两个依赖包

时间:2012-07-10 13:43:26

标签: compilation dependencies osgi bundles

我正在学习OSGi框架。我发现Bundles包含.class文件和清单文件。现在假设我有两个捆绑包A和B,捆绑包B依赖于捆绑包A的服务。因此,在编译bundle B时,我必须将Bundle A的服务类保留在bundle B的类路径中,或者必须将它(Bundle A的服务)保存在bundle B中,以便编译器可以编译。现在,如果我们这样做,那么如何实现模块化以及两个捆绑包是如何独立的。请帮忙。 感谢

2 个答案:

答案 0 :(得分:6)

使用接口!!

您在界面I中。类A实现I,因此在编译时和运行时都依赖于它。类B使用I的实例,它作为OSGi服务获取。因此B在编译时和运行时依赖于I

因此,AB都不能直接了解彼此。隐藏实现代码,只有界面可见并共享。这就是模块化的实现方式。

答案 1 :(得分:0)

手动执行依赖关系管理容易出错。我建议你使用maven来管理依赖项。另外,maven-bundle-pluginIn可以帮助你在编译时检查导入/导出包;而maven-eclipse-plugin可以帮助你根据pom中的依赖配置生成eclipse项目。