我正在构建一个包含一些插件的Eclipse功能。其中一个插件使用import package语句声明对另一个插件的依赖。
另一个插件具有特定于平台的代码,并存在于我正在构建的另一个功能中。我在此功能中有两个具有平台特定代码的插件。 os = win32 arch = x86,os = win32 arch = x86_64
这两个功能正在构建并使用Tycho,它们都有成功可用的p2存储库。
因此,我创建了一个指向这两个存储库的复合存储库,然后在我的RCP应用程序中使用“Install New Software ...”命令并指向复合存储库以安装我提到的第一个功能。
问题是安装完成后,具有平台特定代码的插件无法正确安装。具体来说,x86系统的插件出现在我的64位机器上。
答案 0 :(得分:2)
在feature.xml中,选择具有特定于平台的代码的插件并添加平台过滤器。过滤器在右侧可用(一旦选择插件)。您可以选择过滤器,例如:
发布您的功能后,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位计算机上。
更新:我错了。这不是正确的答案。某些机器上仍然安装了不正确的插件。