在开发Eclipse应用程序时,MANIFEST.MF中的依赖项选项卡有两列。
一个是Required Plug-ins
,另一个是Imported Packages
。
为什么我们Imported Packages
时需要Required Plug-ins
?
评论认为“此插件依赖于未明确标识其原始插件”,但我不确定在何种情况下,人们不希望明确标识其来源插件,它有什么优势?
相关问题 - What's the difference between Eclipse Packages and Plug-ins?
答案 0 :(得分:9)
导入包提供了额外的间接级别,而不是需要捆绑包。
考虑一些标准API的情况...... org.standard.framework
。假设有两家公司实施此API,可能您有捆绑com.abc.framework
和com.xyz.framework
。这两个实现包都会导出org.standard.framework
包。
现在假设您需要org.standard.framework
实施,但您并不特别关心哪一个。{1}}。如果您需要com.abc.framework
或com.xyz.framework
捆绑包,则表明您正在将自己与特定实施方案联系起来。使用import-package指令,您可以让OSGi充当间接层。
import-package的另一个优点是,如果将包移动到另一个包,则不需要更改依赖项。当捆绑包被分解或组合时,这种情况可能在重构期间出现。
由于这些原因,OSGi规范编写者现在通常建议使用相对较新的import-package指令而不是require-bundle。问题是并非所有的捆绑都准备好了。许多人在导出包时尚未指定版本。这使得import-package在许多情况下都不切实际。
答案 1 :(得分:1)
指定对整个插件的依赖性,相反,如果你有很多插件,那么只有必需的包可能会产生循环依赖。最好只指定实际需要的包。对于少量插件,如果您确定,您可以有效地维护依赖项,欢迎您通过指定整个插件来简化您的生活。希望这会有所帮助。