2012-04-26 33 views
5

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

+1

为什么不简单地将您必需的瓶子部署为捆绑包,并为您自己添加适当的依赖关系而不是嵌入。 – Robin 2012-04-27 13:53:27

回答

5

不幸的是,人们包括很多“很高兴有零件”(通常称为utils),导致这些进口。很多时候,罪魁祸首是你想要使用的核心代码。如果你使用bndtools,那么你可以很容易地检查依赖运行的方式。

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

最后,你可能会摆脱许多不必要的进口。但是,通常还有一些离开。在这种情况下,使用分辨率对其进行装饰:=在进口包装语句中可选:

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

不要忘记*在最后。