您所命名的 Java 库在 OSGi 上下文中被命名为“Bundle”。
OSGi Bundle 是一个 JAR 文件,在其 MANIFEST.MF 文件中有一些特殊的元信息。现在,每个 OSGi Bundle 都有 Exported-Packages 或 Imported-Packages。
通过 Export-Packages Manifest 标头,您可以显示您正在导出的所有包。您的其他项目可以简单地将它想要使用的包从它们添加到其 Import-Packages.. 这是一个示例:-
捆绑清单:-
Export-Packages: com.demo.exported;
捆绑 B 清单:-
Import-Packages: com.demo.exported;version=(1.0.0, 2.0.0]
这样,您的包 B(一个不同的项目)可以调用从包 A 导入的包中的类中的方法。现在,您在导入包中看到的版本只是为了显示所有包版本可以接受..您可以拥有两个具有某些接口的两个不同实现的捆绑包,并以两个不同的版本提供此包..两者都将可用..
到现在为止,我在谈论静态数据类型..
您还可以通过声明式服务动态公开您的服务。在这种情况下,您必须定义一个 XML 文件(组件定义),在其中显示您的 Bundle 将公开的所有服务。在另一个包中,您可以再次定义另一个 XML,以显示它需要的所有服务。这些被称为提供的服务和引用的服务。
我认为这将使您对可以做什么有所了解。如果我在解释您的问题的某个地方有误,请指定相同的内容..
*注意:- 当然,OSGi 用于创建独立的捆绑包,可以在其他项目中重复使用。它们为您的项目带来模块化..