我有一个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 /体系结构。
这是标准的Eclipseorg.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提供的solution,我注意到您可以有多个相互矛盾的插件,而不会出现问题-即可以指定Windows和Mac插件,并且在运行时Eclipse将使用它可以找到的任何东西。
这意味着通过指定两个插件,尽管总是将一个插件显示为错误(因为在该平台上无法解决),它仍然可以正常工作。