执行 api 包的库包是否应该导出 api 包?

Should library bundle implementing api bundle export the api packages?

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

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

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

您可以导出 API 包,但必须确保您也导入了这些包。所以 OSGi 框架可以决定它实际上连接了哪些包。如果您有两个导出相同包的包,这一点很重要。

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