执行 api 包的库包是否应该导出 api 包?
Should library bundle implementing api bundle export the api packages?
我有一大堆使用其他捆绑包的捆绑包。例如:
- 基本包使用 api 包。
- api 捆绑包是纯 api 捆绑包
- base bundle使用api bundle,是一个library bundle(有用的库函数,其他bundle可以用)
- api 包导出 api 包
- 基本包导出基本包。基本包还从 api 包中导出 api 包。
让基本包也导出 api 包是否正确?
我这样做是因为现在用户只需将基础包添加到他们的构建路径中,并且基础 + api 包将由 bndtools 找到。否则使用基本包的用户需要弄清楚基本包使用 api 包,他们需要将其添加到构建路径中。
您可以导出 API 包,但必须确保您也导入了这些包。所以 OSGi 框架可以决定它实际上连接了哪些包。如果您有两个导出相同包的包,这一点很重要。
顺便说一句。通常你不应该导出基础包包。如果 API 的用户仍然必须知道 impl,则您不会获得真正的解耦。相反,您可以使用 API 接口将 impl class 导出为服务。
我有一大堆使用其他捆绑包的捆绑包。例如:
- 基本包使用 api 包。
- api 捆绑包是纯 api 捆绑包
- base bundle使用api bundle,是一个library bundle(有用的库函数,其他bundle可以用)
- api 包导出 api 包
- 基本包导出基本包。基本包还从 api 包中导出 api 包。
让基本包也导出 api 包是否正确?
我这样做是因为现在用户只需将基础包添加到他们的构建路径中,并且基础 + api 包将由 bndtools 找到。否则使用基本包的用户需要弄清楚基本包使用 api 包,他们需要将其添加到构建路径中。
您可以导出 API 包,但必须确保您也导入了这些包。所以 OSGi 框架可以决定它实际上连接了哪些包。如果您有两个导出相同包的包,这一点很重要。
顺便说一句。通常你不应该导出基础包包。如果 API 的用户仍然必须知道 impl,则您不会获得真正的解耦。相反,您可以使用 API 接口将 impl class 导出为服务。