如何使用eclipse p2存储库获取具有特定于平台的代码的插件以部署到正确的平台?

时间:2013-01-23 14:21:14

标签: eclipse-plugin eclipse-rcp tycho p2

我正在构建一个包含一些插件的Eclipse功能。其中一个插件使用import package语句声明对另一个插件的依赖。

另一个插件具有特定于平台的代码,并存在于我正在构建的另一个功能中。我在此功能中有两个具有平台特定代码的插件。 os = win32 arch = x86,os = win32 arch = x86_64

这两个功能正在构建并使用Tycho,它们都有成功可用的p2存储库。

因此,我创建了一个指向这两个存储库的复合存储库,然后在我的RCP应用程序中使用“Install New Software ...”命令并指向复合存储库以安装我提到的第一个功能。

问题是安装完成后,具有平台特定代码的插件无法正确安装。具体来说,x86系统的插件出现在我的64位机器上。

2 个答案:

答案 0 :(得分:2)

在feature.xml中,选择具有特定于平台的代码的插件并添加平台过滤器。过滤器在右侧可用(一旦选择插件)。您可以选择过滤器,例如:

  1. OS
  2. WS
  3. 语言
  4. 建筑
  5. 发布您的功能后,p2将生成相应的过滤器。

答案 1 :(得分:0)

我找到了答案。

我在问题中提到的第一个功能中需要一个位于我的feature.xml文件旁边的p2.inf文件。

在那个p2.inf文件中,我需要这个文本......

requires.1.namespace=org.eclipse.equinox.p2.iu
requires.1.name=com.myplatform.specfic.bundle.win32.x86   
requires.1.filter=(&(osgi.os=win32) (osgi.arch=x86))

requires.1.namespace=org.eclipse.equinox.p2.iu
requires.1.name=com.myplatform.specfic.bundle.win32.x86_64
requires.1.filter=(&(osgi.os=win32) (osgi.arch=x86_64))

我还将此文件添加到build.properties中,以确保它包含在已部署的功能中

然后,当我部署p2存储库并将安装执行到我的RCP应用程序时,正确的插件被放置到我的64位计算机上。

更新:我错了。这不是正确的答案。某些机器上仍然安装了不正确的插件。