Eclipse RCP 产品文件——如何处理具有平台特定依赖性的多个平台

Eclipse RCP Product File - how to handle multiple platforms with platform specific dependencies

我有一个 Eclipse RCP 应用程序,其 .product 文件包含对本机 SWT 插件的引用。

   <plugins>
      <plugin id="org.eclipse.equinox.launcher.win32.win32.x86_64" fragment="true"/>
      <plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/>
   </plugins>

但是,在其他平台上(例如 Mac)无法解析这些插件。如果您使用该插件的 Mac 版本(例如 org.eclipse.swt.cocoa.macosx.x86_64),一切正常。

有没有什么方法可以为不同的环境指定不同的插件,或者更通用的插件?

我很欣赏在部署多平台 RCP 产品时,事情会变得复杂 - 但目前我只是想让它尽可能简单,让开发人员在多个平台上起床 运行 应用程序,而不是最终用户。

使用基于功能的产品文件而不是基于插件的。

定义功能的feature.xml文件可以指定OS/GUI/架构。

这是标准 Eclipse org.eclipse.e4.rcp feature.xml 的 SWT 插件/片段:

<plugin
      id="org.eclipse.equinox.launcher.cocoa.macosx.x86_64"
      os="macosx"
      ws="cocoa"
      arch="x86_64"
      download-size="40"
      install-size="88"
      version="1.1.1100.v20190907-0426"
      fragment="true"/>

<plugin
      id="org.eclipse.equinox.launcher.gtk.linux.ppc64le"
      os="linux"
      ws="gtk"
      arch="ppc64le"
      download-size="76"
      install-size="253"
      version="1.1.1100.v20190907-0426"
      fragment="true"/>

<plugin
      id="org.eclipse.equinox.launcher.gtk.linux.x86_64"
      os="linux"
      ws="gtk"
      arch="x86_64"
      download-size="69"
      install-size="166"
      version="1.1.1100.v20190907-0426"
      fragment="true"/>

<plugin
      id="org.eclipse.equinox.launcher.win32.win32.x86_64"
      os="win32"
      ws="win32"
      arch="x86_64"
      download-size="80"
      install-size="161"
      version="1.1.1100.v20190907-0426"
      fragment="true"/>

<plugin
      id="org.eclipse.swt"
      download-size="16"
      install-size="32"
      version="3.114.0.v20200304-0601"
      unpack="false"/>

基于 greg-449 提供的 ,我注意到您可以毫无问题地拥有多个相互矛盾的插件 - 即可以同时指定 Windows 和 Mac 插件,并且在运行时 Eclipse 将使用它能找到的任何东西。

这意味着通过指定这两个插件,尽管其中一个总是显示为错误(因为它在该平台上无法解决),但它可以正常工作。