级别: 中级 Chris Aniszczyk (zx@us.ibm.com), 软件工程师, IBM
2008 年 4 月 28 日 Eclipse 中的插件开发有一点点类似于一种艺术形式。如果刚开始接触插件概念(尤其是在 OSGi 和 Eclipse 环境中),学习使用 Eclipse 配备的各种工具编写插件可能非常麻烦。本文的目的旨在帮助您了解一些基本插件开发技巧,并附带介绍了一些最佳实践。
“插件开发 101” 系列文章主要介绍如何开发插件。但是在开始之前,需要确保配备开发插件所需的正确环境。第一步是从 Eclipse.org 下载带有 Plug-in Development Environment (PDE) 的 Eclipse 发行版。建议下载最新版本的 Eclipse Classic。在本系列中,我们将使用 Eclipse V3.4 (M5) 的里程碑发行版。完成后,就准备好开发插件了(如果您刚开始使用 Eclipse,要了解查找 Eclipse 及附加背景信息的位置,请查阅 参考资料)。
为了使插件开发更易于理解,本文将遵循图 1 中显示的工作流程。在 第
1 部分 中,我们讨论了工作流程的前五个步骤。在本文中,我们将介绍最后两个步骤并主要介绍富客户机应用程序。
图 1. 插件开发工作流程
构建
配置构建内容是插件开发活动中的重要步骤。在 Eclipse 中,所有与构建相关的插件开发配置都位于 build.properties 文件中。
图 2. 构建配置 (build.properties)
 |
自动化构建?
设置插件的自动化构建不在本文的范围内,但是由于经常会遇到这个问题,因此本文提供了一些背景信息。设置自动化控制的最常见方法是使用 Eclipse SDK 中的 PDE Build 组件。PDE Build 的不足之处在于它很复杂,这会使初学者备受挫折。快速了解如何设置自动化构建的方法是查看 Pluginbuilder Web 站点中的插件和工具(请参阅 参考资料)。 |
|
样例构建配置内容集中在 MANIFEST.MF、plugin.xml 和图标文件中。可能还包括可以提供国际化支持的 plugin.properties 或者诸如许可证文件之类的工件。必须注意的是 binary build 与 source build 之中的差别。通常,当您从 Eclipse 中导出一个插件时,它只是可供您的朋友在其 Eclipse 安装中使用的二进制插件导出。Source Build 应当包括正使用的插件的源代码。在典型的导出操作中可以选择制作一个 source build。
导出
典型的插件开发人员工作流程的最后一步是导出已经创建的插件。Eclipse 的 PDE 通过使用专用的导出向导简化了这一过程。要访问此向导(参见图 3),只需单击 File > Export 并选择 Plug-in Development 类别下的 Deployable Plug-ins and Fragments。
图 3. 导出插件向导
在此向导中要选择的第一个选项是需要导出的插件。在本例中,我们只需要简单的 HelloWorld 插件。下一步是选择将插件导出到哪个目标文件中。我们可以选择把插件放入 ZIP 文件或目录中。此向导内的其他选项包括对插件执行签名和绑定源代码的功能。现在,请忽略这些选项而仅仅单击向导中的 Finish 来导出插件(参见图 4)。注,插件清单编辑器中的 Overview 页面提供了一个用于启动向导的简单超级链接。
图 4. 磁盘中的插件
好的!这就是把插件从 Eclipse 工作区导出为硬盘上的一种可用形式。在这种形式下,可以轻松地将插件发给同事和朋友。现在我们不再需要关注插件开发工作流程,但是既然知道了基础知识,那么我们可以开始了解如何在 Eclipse 中创建富客户机应用程序。
 |
Rich Client Platform
在 Eclipse 中,富客户机应用程序是使用 Rich Client Platform (RCP) 启用的。通常,Eclipse 平台专门用作开放工具平台。但是,它的设计目标是可以使用其组件构建几乎任何客户机应用程序。构建富客户机应用程序所需的最小插件集被统称为 Rich Client Platform。要了解更多信息,请参阅 参考资料。 |
|
产品
要在 Eclipse 中创建富客户机应用程序,需要使用称为产品配置 的概念。产品配置是 PDE 提供给插件开发人员来构建富客户机应用程序的方法。要了解产品配置,需要有一个可以使用的样例富客户机应用程序。我们将利用 第 1 部分 中介绍的 PDE 模板机制来创建一个样例富客户机应用程序。创建一个名为 rcp 的插件项目并确保指出是富客户机应用程序,然后选择 RCP Application with a view 模板(参见图 5)。
图 5. 富客户机应用程序模板
下一步是创建一个产品配置文件来帮助组装先前创建的富客户机应用程序。要创建一个新的产品配置,请右键单击该插件项目并选择 New > Product Configuration 来启动新产品配置向导(参见图 6)。接受所有默认值,使用 rcp.product 作为产品配置文件的名称并单击 Finish 以启动产品配置编辑器。下面几个部分将介绍产品配置编辑器的各个页面。
图 6. 新产品配置向导
概览
类似于插件 manifest 编辑器,产品配置编辑器中显示的第一页是 Overview 选项卡(参见图 7)。它将提供产品配置的快速一览、测试和导出产品的便利链接以及选择产品是基于插件还是基于特性等功能。要快速测试应用程序,请选择 Testing 部分中的 Launch an Eclipse application 链接并查看富客户机应用程序。
图 7. 概览
这就是关于产品配置编辑器中的 Overview 选项卡的信息。如果对产品配置的基本操作感兴趣,请参考概览。
还可以从这里启动应用程序。例如,单击 Launch an Eclipse application,然后您应当会看到应用程序弹出(参见图 8)。
图 8. 启动应用程序
配置
Configuration 选项卡包含运行产品所需的基本构建块。这包括诸如运行产品所需的工件之类的信息。第一部分 Plug-ins and Fragments 只列出了运行产品所需的插件和代码片段。帮助提示:使用产品时常常需要引入依赖关系。发生这种情况时,总是倾向于选择 Add Required Plug-ins 来判断是否需要向产品配置中添加任何内容。
下一部分 Configuration File 表示 OSGi 专用工件 —— 名为 config.ini 的文件。在绝大多数情况下您都不会希望修改此设置,并由 Eclipse 生成文件。此文件包含的全部内容实际上是您在前面的插件和代码片段部分中指定的内容,但是是以 Eclipse 在启动时可以读取的特殊形式保存。
图 9. 配置
启动
Launching 选项卡包含涉及启动基于 Eclipse 的产品的所有信息。Java Runtime Environment 部分允许方便地绑定平台特有的 JRE。Program Launcher 部分允许自定义启动产品的可执行文件。例如,开发人员通常都希望使用 eclipse.exe 以外的其他名称作为其启动程序可执行文件的名称。除了给启动程序可执行文件命名之外,您还可以使用平台特有的图标来标记它。Launching Arguments 部分允许您为产品指定平台特有的启动参数。如果需要在一个操作系统(例如 Mac OS X)中实现任何特殊操作,这可能会有用。
图 10. 启动
Splash
Splash 选项卡允许可选地配置产品的闪屏(splash screen)(参见图 11)。例如,在启动 Eclipse 时,您将看到一个显示 Eclipse 及加载插件进度的简单闪屏。默认情况下,示例 RCP 应用程序附带了一个基于位图的简单闪屏。但是,为了演示可以对闪屏执行的有趣操作,我们将利用登录闪屏模板(位于 Customization 部分)。选择登录模板后,保存产品配置并启动应用程序。
图 11. 闪屏
注意新的闪屏带有登录帐户和密码。
图 12. 自定义闪屏
自定义
Branding 选项卡(参见图 13)允许执行三项操作:自定义窗口图像、创建自定义 about 对话框以及创建可选的欢迎页面。窗口图像只是与应用程序 shell 窗口相关的图像。例如,在启动 Eclipse 时,标题栏有一个 16x16 的小 Eclipse 图标。这些是可以自定义的图标类型。大多数软件应用程序都有某种形式的 about 对话框,用于列出诸如许可证、出处及版本信息等内容。使用产品配置编辑器可以重用现有的 Eclipse about 对话框,但是用您自己的图像和信息来对它进行自定义。
您可以创建欢迎页面来帮助用户了解您的应用程序。例如,要查看默认的 Eclipse Welcome 页面,只需选择 Help > Welcome 菜单项。如果需要为应用程序提供类似功能,则可以在 Branding 选项卡的 Welcome Page 部分中启动。由于创建欢迎页面不在本文范围内,因此要了解更多信息,请参阅 参考资料 以查找关于 Eclipse 用户帮助技术的更多信息。
图 13. 自定义
结束语
大体上,“插件开发 101” 系列的任务是介绍插件开发的基础知识,并附带介绍一些最佳实践。我们在 第 1 部分 中创建了一个样例插件并遍历了一个典型插件开发工作流程。在第 2 部分中,我们结束了插件开发工作流程并创建了一个富客户机应用程序。掌握了工作流程后,开发插件和基于 Eclipse RCP 的应用程序将变得更容易。
现在,继续前进并使用新学到的知识来创建插件和基于 Eclipse 的应用程序。
参考资料 学习
获得产品和技术
讨论
关于作者  | 
|  | Chris Aniszczyk 是 IBM Lotus 的软件工程师,专门从事 OSGi 相关开发工作。他是开放源码的忠实拥护者,目前在开发 Gentoo Linux 发行版,他还是一些 Eclipse 项目(PDE、ECF、EMFT)的参与者。他十分 乐意与您讨论 关于开放源码和 Eclipse 方面的问题。 |
对本文的评价
|