在OSGi包中嵌入jar时,忽略还是可选的解决方案?

时间:2012-04-26 19:18:10

标签: embed osgi bundle

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

1 个答案:

答案 0 :(得分:6)

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

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

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

Import-Package: com.oracle.whatever; resolution:=optional, *

最后不要忘记*。