在OSGi包中嵌入jar时,忽略还是可选的结果?

Ser*_*gey 5 embed osgi bundle

当我构建一个包时,我需要在我的情况下嵌入几个罐子(http-core和http-client).使用maven和flex插件我得到了巨大的导入列表 - 一些我不需要的东西.截至目前,我只是否定了我不需要的软件包<Import-Package>,但我也可以使用Import-Package: resolution:=optional.我想知道什么是首选方式,两种方法的优点/缺点是什么?

Pet*_*ens 6

不幸的是,人们包含很多"很好的部件"(通常称为utils)导致这些导入.通常,罪魁祸首是您要使用的核心代码.如果使用bndtools,则可以轻松检查依赖项的运行方式.

在bndtools和maven中你使用bnd,而bnd使得很容易只将部分JAR复制到你的包中.这样您就可以最小化依赖关系.只需使用Private-Package复制您真正需要的包,然后查看导入.如果您导入了您认为需要的内容,请将其添加到Private-Package(在bndtools中,您可以通过拖放操作完成此操作).

最后你可以摆脱许多不必要的进口.但是,通常会留下一些.在这种情况下,使用resolution-= Import-Package语句中的可选项来装饰它们:

Import-Package: com.oracle.whatever; resolution:=optional, *
Run Code Online (Sandbox Code Playgroud)

不要忘记最后的*.