站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Eclipse 专题Eclipse插件开发如虎添翼

Eclipse插件开发如虎添翼

摘要: 随着Eclipse作为一个集成开发环境和富客户端(Rich Client)平台而广泛流行起来,更多的公司和个人进入到开发Eclipse插件的队伍中。
  随着Eclipse作为一个集成开发环境和富客户端(Rich Client)平台而广泛流行起来,更多的公司和个人进入到开发Eclipse插件的队伍中。你想过写一个你自己的Eclipse插件么?这篇文章中我将带领你开发一个简单的可视化插件。这里你可以学习Eclipse插件的体系结构,并且学着熟悉Plug-in Development Environment(PDE)。

  简介

  许多年以前,当我第一次仔细考察Eclipse时(我记得当时好像是2.0版本),我对它的完全免费印象非常深。它提供了很多非常不错的Java开发能力,但是当时并没有比那些商业版本好上多少。然而,真正吸引我的是我发现可以用我自己的代码随意扩展它的特性。事实上,并不需要特别的工具--Eclipse提供了所有可以用于自身开发的工具和框架。

  从那以后,Eclipse开始在各方面成熟起来--它的设计更加改进了,它的结构变得更加强健且不失灵活,它的各种工具也变得更加强大和高效。它已经从一个工具集成框架变成了一个开发胖客户端(rich-client)程序的平台。这也证明了我心目中对它本身的基本设计理念的质量的评价。

  扩展Eclipse需要你对可用的结构和工具的基本熟悉和了解。因为学习如何去做一件事情的最好方式就是去试着自己做做看,本篇文章将会帮助你使用插件开发环境PDE开发一个简单的Eclipse插件。当你学习一点Eclipse体系结构的背景信息之后,你将会使用PDE向导来创建一个新的插件,完成一个简单的工作台视图,并且测试你的工作看最后的结果。实现的具体细节不能一一说明了。为了完成这个工作,你需要获得最新的Eclipse SDK(3.1版本),可以从 http://www.eclipse.org/downloads 获得一份免费的拷贝。

  所有的东西都是插件

  从一个开发者的角度来说,Eclipse是一个开发各种客户端程序的平台。本身其是作为一个开发工具而产生的,现在它的范围已经扩展到包括各种胖客户端应用程序,以及非桌面环境,比如手持设备和嵌入式系统。为了支持如此大范围的应用,高度的可扩展性是非常必要的。每个基于Eclipse的程序都包含了多个组件,它们被称作为插件(plugins),相互间通过预先定义的接口集合进行交互。插件通过一个很小的运行时层来进行管理,负责它们的发现和启动。从3.0版本开始,原来的运行时层实现被新的基于开放服务网关初始化(Open Services Gateway initiative, OSGi)所替代,从而提高了Eclipse向多个硬件和操作系统的移植能力,并且提供了对管理的执行环境的兼容性。因此,目前的Eclipse插件是作为OSGi 的组件来开发的。

  和其他的组件管理环境类似,每个Eclipse插件的运行时特性是在它的描述符中被指定的,运行时层使用描述符来配置插件的执行环境。在3.0版本以前,描述符是一个XML格式的文件,名为plugin.xml,在每个插件目录的根目录中保存。为了和OSGi运行时整合,插件一般被打包成JAR文件,并且它们的属性比如单一的标识符,版本号,运行时classpath和导出的包,被包含在它们的JAR manifest中(即META-INF/MANIFEST.MF)。然而,对于一般记录Eclipse插件的特性的描述符--插件扩展和扩展点--仍然留在plugin.xml文件中描述。

  一个插件的扩展点基本上是它的组件配置点,使用XML Schema子集描述。一个完成某种抽象功能的插件,比如在工作台显示独立视图等,将会公布一个扩展点,指定每个实现必须完成什么才能被这个插件使用。这些一般需要包含简单的属性,比如窗口标题和图标路径,同时也包含实现具体接口的类名称。在这里的例子中,每个要提供一个视图实现的插件必须声明一个插件描述符属性的ID是org.eclipse.ui.views扩展点的扩展。这个扩展必须指定类实现接口的名为org.eclipse.ui.IViewPart。在运行时,工作台插件查找插件记录中所有的org.eclipse.ui.views的扩展并且将它们提供给用户作为可显示的视图。当用户选择打开某个视图时,工作台插件初始化指定在插件描述符中视图的实现类,并且通过接口org.eclipse.ui.IViewPart来和它交互。这个机制是Eclipse扩展性的基石。插件给其他的插件提供具体的实现,很多都是实现了自身高度抽象,并且将它们作为扩展点提供给其他的插件来完成。

  Listing 1: plugin.xml的内容:

<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1> <tr> <td><?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
 <plugin>
  <extension point="org.eclipse.ui.views">
   <category id="com.developer.superview.category1" name="Developer.com"/>
   <view category="com.developer.superview.category1" class="com.developer.superview.Superview" id="com.developer.superview.view1" name="Superview"/>
  </extension>
 </plugin></td></tr></table>
  插件开发环境

  就像你所看到的一样,开发Eclipse程序的核心任务主要包含创建实现一个或者多个扩展的插件。理论上来说,没有东西会阻止你使用记事本,或者vi或者命令行中的javac来开发Eclipse插件(我想听听尝试过的人怎么说得!)。幸运的是,Eclipse拥有一个强大的工具集来使这一任务变得简单。插件开发环境PDE是作为Eclipse SDK的一个部分自由分发的,并且作为一个基于Eclipse的IDE工具的好范例而存在--它只是一些插件和它们的扩展的集合(事实上他们也留下了一些扩展点,你可以用这些扩展点来开发自己的PDE扩展)。

  在PDE中,每个正在开发的插件都是被单个的Java工程所代表。插件工程具有一些独一无二的特性来标示自己。比如说它们每一个都有一个插件描述符(一个manifest和/或一个plugin.xml文件),一个基于描述符指定的依赖关系的动态classpath,特殊的编译器,和其他配置属性。PDE提供了一个插件创建向导,可以选择各种需要的部分创建插件工程。

  PDE带有一个特别的多页编辑器来使得插件开发更加简单。插件Manifest编辑器用到3个文件--包含的manifest(META-INF/MANIFEST.MF),plugin.xml和build.properties.它允许你编辑所有必要的属性来描述一个插件--它的基本运行时要求,依赖,扩展,扩展点等等。当开发插件的时候你需要做更详细的了解。

  因为Eclipse插件都是Java的工程,它们缺省都是逐步构建的,不需要特别的人工编译步骤。PDE也允许使用Ant来创建非自动编译的插件;你可以为你的插件创建一个Ant的build脚本(在Package Explorer中,右键点击你的plugin.xml并且选择PDE Tools -> Create Ant Build File),它提供了创建多个目标输出的方式(比如插件JAR包,源代码包等等)。

  为了测试你的工作,PDE提供了一个特别的启动配置类型,允许你使用它的配置中包含的工作区插件来启动另外一个工作台实例(被称为运行时工作台)(也被称作为se lf-hosting--你不比将你的插件安装进一个外部的工作台来测试它们,你可以使用自己的开发工作台动态安装)。你的Eclipse启动配置将允许你指定你想包含的哪个插件,特殊的命令行参数,环境属性等等。

  PDE也有一个强大的用户文档和扩展参考信息(Javadoc和扩展点文档)。因为它是和Eclipse在一个规则下分发的,所以它的代码也是完全开放的,并且缺省包含的SDK中。




↑返回目录
前一篇: 在Eclipse中使用Hibernate插件
后一篇: Eclipse中使用Junit插件测试