库捆绑实现api bundle是否应该导出api包?

时间:2016-02-17 18:25:02

标签: java osgi bnd bndtools

我有一个使用其他捆绑包的大树捆。例如:

  • 基础包使用api包。
  • api包是一个纯粹的api包
  • 基础包使用api包并且是一个库包(有用的库函数,其他包可以使用)
  • api bundle导出api包
  • 基础包导出基础包。基本包还从api包中导出api包。

让基础包也导出api包是否正确?

我这样做是因为现在用户只需要将基础包添加到他们的构建路径,并且bndtools可以找到base + api包。否则,使用基本包的用户需要弄清楚基本包使用api包,他们需要将其添加到构建路径中。

1 个答案:

答案 0 :(得分:4)

您可以导出API包,但必须确保还导入包。因此,OSGi框架可以决定它实际连接哪些包。如果在某些时候您有两个包导出相同的包,这很重要。

顺便说一下。通常,您不应导出基础包捆绑包。如果API的用户仍然必须知道impl,则不会获得真正的解耦。相反,您可以使用API​​接口将impl类导出为服务。