5

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

4

1 回答 1

6

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

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

最后,您可能可以摆脱许多不必要的导入。但是,通常会留下一些。在这种情况下,在 Import-Package 语句中使用 resolution:=optional 装饰它们:

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

不要忘记最后的*。

于 2012-04-27T14:01:28.703 回答