17

在开发 Eclipse 应用程序时,MANIFEST.MF 中的依赖项选项卡有两列。

一个是Required Plug-ins,另一个是Imported Packages

为什么我们需要Imported PackagesRequired Plug-ins

评论说“这个插件依赖于没有明确标识它们的原始插件”,但我不确定在什么情况下不想明确标识它们的原始插件,它的优势是什么?

在此处输入图像描述

添加

相关问题 - Eclipse Packages 和 Plug-ins 有什么区别?

4

2 回答 2

11

导入一个包比需要一个包提供了一个额外的间接级别。

考虑一些标准 API 的情况org.standard.framework...... 假设有两家公司实现了这个 API,也许你有 bundlescom.abc.frameworkcom.xyz.framework. 这两个实现包都会导出org.standard.framework包。

现在假设,您需要一个org.standard.framework实现,但您并不特别关心是哪一个。如果您需要其中一个com.abc.frameworkcom.xyz.framework捆绑,则您将自己绑定到特定的实现。使用 import-package 指令,您可以让 OSGi 充当间接层。

import-package 的另一个优点是,如果将包移动到另一个包,您的依赖项不需要更改。当捆绑包被分解或组合时,在重构期间可能会出现这种情况。

由于这些原因,OSGi 规范编写者现在通常建议使用相对较新的 import-package 指令而不是 require-bundle。问题是并非所有的捆绑包都为此做好了准备。许多人在导出包时还没有指定版本。这使得 import-package 在许多情况下变得不切实际。

于 2012-12-19T21:37:11.407 回答
0

指定对整个插件的依赖,如果你有很多插件,那么只有一个必需的包可能会创建一个循环依赖。最好只指定您实际需要的包。对于少量的插件,如果您确定能够有效地维护依赖关系,欢迎您通过指定整个插件来简化您的生活。希望这可以帮助。

于 2012-12-19T19:48:41.273 回答