在本文中David Gallardo 向您展示了如何使用 Plugin Development Environment 的代码生成向导来创建Eclipse插件您将学到如何在运行时工作台中运行和调试插件并且在 Eclipse 中安装完成的插件David还研究了与打包插件相关的问题包括维护版本信息以插件片段的形式更新功能以及组合插件来创建完整的功能部件
基于插件的体系结构
Eclipse平台是IBM向开发源码社区捐赠的开发框架它之所以出名并不是因为IBM宣称投入开发的资金总数 —千万美元—而是因为如此巨大的投入所带来的成果一个成熟的精心设计的以及可扩展的体系结构Eclipse的价值是它为创建可扩展的集成开发环境提供了一个开放源码平台这个平台允许任何人构建与环境和其它工具无缝集成的工具
工具与 Eclipse 无缝集成的关键是插件除了小型的运行时内核之外Eclipse 中的所有东西都是插件从这个角度来讲所有功能部件都是以同等的方式创建的从这个角度来讲所有功能部件都是以同等的方式创建的
但是某些插件比其它插件更重要些Workbench 和 Workspace 是 Eclipse 平台的两个必备的插件 — 它们提供了大多数插件使用的扩展点如图 所示插件需要扩展点才可以插入这样它才能运行
图 Eclipse Workbench 和 Workspace必备的插件支持 Workbench 组件包含了一些扩展点例如允许您的插件扩展 Eclipse 用户界面使这些用户界面带有菜单选择和工具栏按钮请求不同类型事件的通知以及创建新视图Workspace 组件包含了可以让您与资源(包括项目和文件)交互的扩展点
当然其它插件可以扩展的Eclipse组件并非只有Workbench和Workspace此外还有一个Debug 组件可以让您的插件启动程序与正在运行的程序交互以及处理错误 — 这是构建调试器所必需的虽然 Debug 组件对于某些类型的应用程序是必需的但大多数应用程序并不需要它
还有一个 Team 组件允许 Eclipse 资源与版本控制系统(VCS)交互但除非您正在构建 VCS 的 Eclipse 客户机否则 Team 组件就象 Debug 组件一样不会扩展或增强它的功能
最后还有一个Help组件可以让您提供应用程序的联机文档和与上下文敏感的帮助没有人会否认帮助文档是专业应用程序必备的部分但它并不是插件功能的必要部分
上述每个组件提供的扩展点都记录在 Eclipse Platform Help 中该帮助在 Platform Plugin Developer 指南的参考部分中乍一看尤其是 API 参考大全的 Workbench 部分一开始会令人望而却步我们不会深入了解众多可用扩展点的详细信息而只是粗略地看一个简单插件及其组件
插件简介
创建插件最简单的方法是使用 Plugin Development Environment(PDE)PDE 和 Java Development Tooling(JDT)IDE 是 Eclipse 的标准扩展PDE 提供了一些向导以帮助创建插件包括我们将在这里研究的Hello world示例
从 Eclipse 菜单选择 File=>New=>Other(或按 CtrlN)然后选择 Select 对话框左边的 Plugin Development 向导在 Select 对话框的右边选择 Plugin Project按 Next在下一屏上输入项目名称我使用了 comexamplehello再次按 Next在下一屏上请注意插件标识就与项目名称相同使用项目名称作为插件标识可以将该插件与另一个插件的名称发生沖突的机会减到最小再按一次 Next下一屏让您选择是手工创建初始插件代码还是运行代码生成向导保留代码生成向导的缺省选项选择Hello World然后按 Next如图 所示
educitycn/img_///gif>图 选择Hello World代码生成向导 下一屏要求一些附加信息请注意这一屏上的信息它包含了插件名称版本号提供者名称和类名这些是关于插件的重要信息我们将在稍后研究可以接受向导提供的缺省值按Next在下一屏幕上接受包名类名和消息文本的缺省值选择Add the action set to the resource perspective复选框按 Finish
如果接到通知向导需要启用某些其它插件才能完成那么按 OK
过一会儿向导将完成而在您的工作区中将会有一个新的项目名为 comexamplehello如图 所示
educitycn/img_///gif>图 PDE 透视图Welcome to Hello Plugin在Package Explorer中工作台的左边是向导创建的一些东西的概述大多数项都不引人关注包括项目类路径中的许多jar文件(这些包括插件和Java运行时所需的Eclipse类)一个图标文件夹(包含了工具栏按钮的图形)以及 buildproperties 文件(包含自动构建脚本所使用的变量)
这里最有意思的东西是 src 文件夹它包含了插件和 pluginxml 文件的源代码 — pluginxml 是插件的清单文件我们将先查看 pluginxml
插件清单文件
插件清单文件 pluginxml 包含了 Eclipse 将插件集成到框架所使用的描述信息缺省情况下当第一次创建插件时会在清单编辑器区域中打开 pluginxml编辑器底部的选项卡让您可以选择关于插件的不同信息集合Welcome 选项卡显示了消息Welcome to Hello PlugIn并且简要讨论了所使用的模板和关于使用 Eclipse 实现插件的提示选择Source选项卡可以让您查看 pluginxml 文件的完整源代码
让我们看看插件清单文件的各个部分首先是关于插件的常规信息包括它的名称版本号实现它的类文件的名称和 jar 文件名
清单 插件清单文件 — 常规信息
<?xmlversion= encoding=UTF?>
<plugin
id=comexamplehello
name=Hello Plugin
version=
providername=EXAMPLE
class=comexamplehelloHelloPlugin>
<runtime>
<library name=hellojar/>
</runtime>
接着列出了我们的插件所需的插件
清单 插件清单文件 — 必需的插件
<requires>
<import plugin=reresources/>
<import plugin=orgeclipseui/>
</requires>
列出的第一个插件reresources是工作区插件但实际上我们的插件并不需要它第二个插件 orgeclipseui 是工作台我们需要工作台插件因为我们将扩展它的两个扩展点正如后面的 extension 标记所指出的 [/img]