私人套餐有什么关系?

2022-09-01 12:58:05

我已经使用OSGi一段时间了,但我仍然对私有软件包有所了解。

  • 导出的包是具有对其他捆绑包可见的包
  • 导入的包是由导出包的捆绑包导入的包。
  • 私有包是其他捆绑包不可见的包(我没有得到这个)

不是所有未导出的捆绑包对所有其他包都是不可见的吗?如果是这样,与私有包和不导出的包有什么区别?

我已经阅读了OSGi in Action和“OSGi和Apache Felix 3.0 - 初学者指南”,但我无法找到区别。


答案 1

没有区别。

任何未列出的软件包都是私有的....这就是它的全部内容。Export-Package

您可能已经看到另一个名为 的标头。这不是一个OSGi头文件,它被OSGi框架完全忽略了。如果您看到此内容,则表示已使用bndMaven Bundle插件构建了捆绑包,该插件使用此标头具有构建时指令。因此,它仅在构建时相关,在运行时没有任何影响。Private-Package


答案 2

是的,所有未在 manifest.mf 条目中定义的包都是专用包。您不需要单独指定它们,这只是便于沟通的另一个术语。Export-Package

如果您已经生成了清单,例如由maven-bundle-plugin生成,则此术语get更相关,因为maven捆绑包插件将默认导出所有包,例如称为(或其子包)的包除外。这在某种程度上是相反的方法,因为您指定了私有包并计算了导出的包。有关详细信息,请参阅 maven 捆绑包插件internal


推荐