0

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

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

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

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

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

4

2 回答 2

2

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

  1. 操作系统
  2. WS
  3. 语言
  4. 建筑学

当您的功能发布时,p2 将生成适当的过滤器。

于 2013-02-07T05:04:42.003 回答
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 位机器上。

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

于 2013-01-23T14:26:48.633 回答