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 将使用它能找到的任何东西。
这意味着通过指定这两个插件,尽管其中一个总是显示为错误(因为它在该平台上无法解决),但它可以正常工作。
我有一个 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 提供的
这意味着通过指定这两个插件,尽管其中一个总是显示为错误(因为它在该平台上无法解决),但它可以正常工作。