Eclipse bundle依赖解析

时间:2014-01-28 17:00:12

标签: dependencies osgi bundle manifest pde

我目前正在尝试编译我的Eclipse PDE项目。去做这个 我必须从Require-Bundle收集所有依赖项 在项目及其依赖项中找到的指令。我现在有 遇到一个问题,如果我想编译它,我的一个项目就会失败 因为它引用了类org.eclipse.swt.graphics.Point org.eclipse.swt.win32.win32.x86捆绑。问题似乎是 对org.eclipse.swt.win32.win32.x86的依赖不能 得到解决。

使用eclipse的依赖关系视图我可以看到org.eclipse.ui 取决于org.eclipse.swtorg.eclipse.swt取决于org.eclipse.swt.win32.win32.x86

这是我的问题:

我不明白eclipse是怎么知道的 org.eclipse.swt取决于org.eclipse.swt.win32.win32.x86。该 org.eclipse.swt的清单文件没有Require-Bundle (或与捆绑相关的其他信息 org.eclipse.swt.win32.win32.x86)声明。那怎么知道??

谢谢你的帮助,

1 个答案:

答案 0 :(得分:0)

这是一种反向依赖,因为org.eclipse.swt.win32.win32.x86是一个由基础org.eclipse.swt包托管并扩展其API的片段包。 SWT基本包很不寻常,因为它根本不包含任何代码......所有内容都在特定于平台的片段中。

这在PDE中有效,因为基本包包含标题“Eclipse-ExtensibleAPI:true”。当PDE看到此标头时,它会搜索可以将API添加到基本包的片段。遗憾的是,如果您正在编写某种构建过程来自动化PDE构建,则需要复制相同的逻辑。

幸运的是,在构建时您无需担心要编译的平台:所有类和方法的签名在支持的平台上是相同的,因此即使使用Win32片段也可以轻松编译你正在Mac上编译(例如)。