我一直在与OSGi合作一段时间,但我仍然不了解私有包。
并非所有未导出的捆绑包对所有其他包都不可见吗?如果是这样,那么未导出的私有包和包有什么区别?
我已经阅读了OSGi in Action和“OSGi和Apache Felix 3.0 - 初学者指南”,但我无法找到差异。
答案 0 :(得分:25)
没有区别。
Export-Package
中未列出的任何软件包都是私有的....这就是它的全部内容。
您可能已看到另一个名为Private-Package
的标头。这不是OSGi标头,OSGi框架完全忽略了它。如果您看到这一点,则表示已使用bnd或Maven Bundle Plugin构建了一个包,它使用此标头具有构建时指令。因此,它仅在构建时相关,并且在运行时无任何影响。
答案 1 :(得分:16)
是的,manifest.mf条目Export-Package
中未定义的所有包都是私有包。你不需要单独指定它们,它只是易于沟通的另一个术语。
如果您的清单是由maven-bundle-plugin生成的,那么这个术语会更加相关,因为maven bundle插件将默认导出所有包,除了一个名为{{1}的包。 (或其子包)。这是某种反向方法,因为您指定了私有包并计算了导出的包。有关详细信息,请参阅the maven bundle plugin。