我需要设计一个特定于操作系统的插件。根据操作系统(MAC或Windows),插件的内容会有所不同。
目前我们正在维护两个不同的插件,一个用于Windows,另一个用于MAC,插件ID为com.core.win和com.core.mac。
我的主要插件依赖于上面的插件。但由于我的插件ID因操作系统而异,因此这两个插件都在插件依赖项中添加为“可选”。
com.core.win; resolution:=optional,
com.core.mac; resolution:=optional
但实际上,依赖是必须的,“必需的”。如何设计我的插件结构,以便可以定义紧密依赖?有没有标准的解决方案?
谢谢!
答案 0 :(得分:2)
通常你有一个基础插件,每个平台都有一个特定于平台的片段。
您使用Eclipse-PlatformFilter
MANIFEST.MF条目来指定平台,例如:
Eclipse-PlatformFilter: (& (osgi.ws=cocoa) (osgi.os=macosx) (osgi.arch=x86_64) )
指定Cocoa窗口系统,Mac OS X操作系统和64位(这是当前Mac的正常设置)。
在plugin.xml / MANIFEST.MF编辑器中,这是“概览”标签的“常规信息”部分中的“平台过滤器”字段。
Here是关于片段的很好的介绍,Eclipse PDE Help也有文档。此外,SWT是使用特定于平台的代码的片段的一个很好的例子。请参阅this FAQ entry以了解如何获取SWT代码以进行检查(您无需实际执行构建和导出部分)。