当我们在Eclipse插件依赖项中有“Required Plug-ins”时,为什么我们需要`Imported Packages`?

时间:2012-12-19 19:40:24

标签: eclipse dependencies eclipse-pdt

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

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

为什么我们Imported Packages时需要Required Plug-ins

评论认为“此插件依赖于未明确标识其原始插件”,但我不确定在何种情况下,人们不希望明确标识其来源插件,它有什么优势?

enter image description here

ADDED

相关问题 - What's the difference between Eclipse Packages and Plug-ins?

2 个答案:

答案 0 :(得分:9)

导入包提供了额外的间接级别,而不是需要捆绑包。

考虑一些标准API的情况...... org.standard.framework。假设有两家公司实施此API,可能您有捆绑com.abc.frameworkcom.xyz.framework。这两个实现包都会导出org.standard.framework包。

现在假设您需要org.standard.framework实施,但您并不特别关心哪一个。{1}}。如果您需要com.abc.frameworkcom.xyz.framework捆绑包,则表明您正在将自己与特定实施方案联系起来。使用import-package指令,您可以让OSGi充当间接层。

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

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

答案 1 :(得分:1)

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