如何制作使用另一个包中的方法的 OSGi 包?

How to make OSGi bundle which uses methods from another bundle?

我有一个预先创建的包 "A",其中包含一些方法(注册为服务)。现在我想创建另一个包 "B",它使用 "A" 中的方法。据我了解,我应该从 class getServiceReference() 中包含 "B" 激活器中的那些方法。但是我怎样才能访问那些 class?我应该将 "A" 的项目作为库导入还是将 .jar 文件导入到 "B" 项目?我正在阅读 "OSGI in action",但在那里找不到明确的答案。请您回答或建议一些有助于找到答案的文章。
P.S。我正在使用 Inteleji IDEA IDE。

bundle A 应该导出 A class 所在的包,这是通过在 Manifest 中添加一个 "Export-Package" 字段来完成的。

bundle B 应该导入 A class 所在的包,这是通过在 Manifest 中添加一个 "Import-Package" 字段来完成的。

包 A 应将 A 注册为服务。

bundle B 应该从 A 获取服务,然后它可以调用 A 上的方法 class。

根据您使用的编译工具(gradle/maven、bnd 工具、...),导出和导入包可以是 "automated"。

根据您在运行时使用的工具(blueprint、iPOJO、ds、...),注册和注入服务可以是"automated"。