【问题标题】:Integrating community plugins into a ready Eclipse RCP app?将社区插件集成到现成的 Eclipse RCP 应用程序中?
【发布时间】:2012-10-18 17:02:28
【问题描述】:
我已经有一个独立的 Eclipse RCP 应用程序。接下来的任务是集成Eclipse社区中广泛使用的插件,如CDT或者说PyDev,在已经开发的内部提供各自编程语言的编辑和调试工具RCP 应用程序。只是想知道我该如何完成这项任务。我是否应该开始玩插件的扩展点并将其添加到 MANIFEST.MF ?
实现这一目标的各种方法是什么?选择哪一个而不是另一个?
【问题讨论】:
标签:
eclipse
eclipse-plugin
eclipse-rcp
eclipse-cdt
pydev
【解决方案1】:
您应该考虑的最重要的事情(除了技术)是概念。
像 CDT 这样的插件对它们所集成的环境做出了很多假设。这意味着您的 RCP 应该具有与普通 Eclipse SDK 非常相似的用户界面和行为,以便其他“IDE-ish”插件的集成不会破坏 RCP 的界面原则。
如果您的 RCP 不是基于通用导航器、项目、文件(通常是工作区)和多个编辑器,那么 CDT 等插件的集成对您的用户来说将是一场噩梦,并且感觉就像您的 RCP 中的另一个应用程序。
还要确保来自第三方插件的 ui-contributions 可见(例如,如果第三方插件正在提供首选项页面,请确保您的 RCP 具有打开首选项窗口的菜单项)
【解决方案2】:
首先,您必须在现有 RCP 应用程序中加载新功能/插件。为此,您必须调整您的产品定义并加载新的 feature.xml 文件。或者您增强自己的 feature.xml 并将新插件放入。
之后,您必须决定新功能/视图/视角是否是对现有 RCP 扩展点的贡献,以及您是否在 RCP 产品中使用此扩展点。
如果您想以其他方式使用新功能(因为默认值不够),您必须指向新插件中的特定视图/操作并自行调用它们。你必须调整你自己插件的 MANIFEST.MF 并指向新插件。如果这样做,则无法关闭添加的功能,因为您确实有指向这些插件的 jard 链接。
【解决方案3】:
您的 RCP 产品已经依赖于 RCP 功能 (org.eclipse.rcp) 或其插件的子集。这意味着,它已经包含了定义basic extension points 的插件。
要包含附加特性的功能(扩展),只需将这些特性添加到您的产品配置依赖项中即可。例如,您必须为 CDT 添加功能 org.eclipse.cdt,为 PyDev 添加功能 org.python.pydev.feature。
当您只需要包含一些功能的插件时,困难的部分就开始了。
您必须隔离提供所需功能的插件。
对于 UI 贡献,您可以通过选择所需的 UI 部分并单击 alt+shift+F1 来使用插件选择 spy。
对于非 UI 贡献,贡献扩展的信息可以在插件源的 plugin.xml 文件中找到。
可以将这些插件及其依赖项添加到自定义功能中,该功能可以包含在您的产品中。
虽然过时了,但Building a CDT-based editor 的文章也可能会有所帮助。