枫林在线论坛精华区>>程序设计
[340912] 主题: Eclipse零起步系列讲座(十)
作者: little (渺小·Happy^_^)
标题: Eclipse零起步系列讲座(十)[转载]
来自: 192.168.*.*
发贴时间: 2005年04月25日 11:26:03
长度: 6203字

Eclipse零起步系列讲座 (十)

===========================================

(前言)
今天我们介绍一下pde, 如果让你自己写plugin.xml这个配置文件,估计也
比较头疼,所以
啊,还是有工具的好,呵呵.

(正文)

[PDE 简介]

PDE 也是eclipse内置的一个插件, 英文名是Plug-in Development Envir
onment, 是eci
lpse team为了帮助用户更好的

开发eclipse插件而开发的一个平台, 专门用来开发插件.
其实第七讲中,我们试过的一个hello world例子,能这么快生成, 编译,运
行, 测试都是p
de的功劳.

PDE主要有一下几个功能:
1. 向导, 包括新建插件工程向导, 新建扩展(extension)向导, 生成扩展
控制类向导等


2. 编辑, 主要是提供了一个对plugin.xml, 也包括(feature.xml, fragm
ent.xml,
site.xml)的可视化编辑

3. 测试和部署, pde提供了一个running workbench, 可以用来运行测试插
件, 还可以进
行单步调试等,而且等插件开发

好后还提供方便的部署插件的功能,能方便把你编辑的项目导出为一个可部
署的插件

而以后要开发插件的同志, 那就要先好好研究一下这个东东了, 对它的掌
握程度直接影
响到你开发插件的效率问题.

关于PDE的详细介绍,可参看eclipse联机帮助中的PDE Guide,有详细介绍


[PDE 配置]

用之前,一般都要做一个配置,就是设置一下目标平台, 因为这涉及到编译
插件时的类路
径问题.

要设置在preference-> plugin development -> target platform
中, enable 所有的插
件, 也就是点一下not in

workspace按钮,然后apply或直接ok. 这样编译插件的时候, pde会自动ch
eck你这个插件
项目的dependency,然后根据你

的dependency,为你设置正确的classpath路径.

如果你一个要被dependency的插件没有enable, 那pde就找不到这个插件,
也就找不到这
个插件的运行库,也就无法设置

classpath了.

总之,开发插件前, 设置一下就ok了

[新建项目]

开发插件,其实不止plugin, 还有feature, site, fragment等等, 可以通
过不同的向导
来生成你要的. 今天先介绍

plugin, 其他的以后说, 而且使用向导新建一个plugin已经介绍过了,这里
就不多说了

[plugin.xml 编辑]
打开plugin.xml, 一个plug-in manifest editor就打开了, 它是一个多页
编辑器, 分为
welcome, overview,

dependency, runtime extensions, extension points 和source 这几页
.


welcome page: 是一个使用这个东东的简介, 如果你不熟悉,可以先看看这
页, 它会教你
一些使用的步骤, 如果你不想以

后再看到这页, 那可以勾一下在这页里下面的一个选择框, 让这页下次不
用显示.

overview page: 是对这个插件的一个概览, 这页可以修改的是这个插件的
id,
name,version, provide name 和 class

对应的源代码是:
<plugin
   id="MyPlugin"
   name="MyPlugin Plug-in"
   version="1.0.0"
   provider-name=""
   class="MyPlugin.MyPluginPlugin">

dependency page: 这页就是设置当前插件需要依赖的插件有哪些,比如你
开发一个hello
world中就要依赖org.eclipse.

ui这个插件, 因为我们使用到了对话框,菜单等等, 这些实现在ui这个插件
里都有. 我们
就可以通过add这个按钮加入我

们需要dependency的插件.

而且由于eclipse各个插件版本丰富, 版本之间有时不能兼容, 所以我们有
必要对我们要
依赖的插件做一些版本的需求.

我们点中我们依赖的插件的那个项,看页面右边有一个import detail, 可
以设置version
 to match,你可以填一个你对应

的那个版本. 而且对应规则你也可以自己设定有none, equal, compatibl
e等等, 具体什
么意思可以参看pde guide

另外还有一个选项叫, re-export dependency, 选了这个后, 这样以后你
开发的插件被
依赖时, 你设置的这个依赖插件

就可视化了, 挺难表达的,举例:
A --> B , B-->C
如果 A 依赖B ,B 依赖 C, 那A 不一定能依赖C , 除非 B 在依赖C时,同时
re-export
dependency, 那A -> C, 就是这个

意思拉

对应的代码段:
   <requires>
      <import plugin="org.eclipse.core.resources"/&
gt;
      <import plugin="org.eclipse.ui"/>
   </requires>


runtime page: 这个页是设置运行库的, 默认情况下会有一个和插件同名
的一个jar做运
行库, 点击这个默认的jar, 会

看见下面的library content 显示 src/ , 这个设置不会反映在plugin.x
ml中, 而是在
导出插件时有影响, 对这个更改

后的效果,反应在build.properties中

如果你这个插件有其他依赖的库, 那就要在这里设置, 要不虽然编译通过
, 但是实际运
行时还是有问题的

另外运行库也要设置library exporting ,如果你的运行库对别的依赖这个
插件的插件不
可视, 那就设置不要导出, 如果

依赖这个插件的插件要用到这个运行库,那就设置导出

对应的代码段:
   <runtime>
      <library name="MyPlugin.jar"/>
   </runtime>

extension page: 这个是设置插件的扩展, 这是很重要的一部分, 可以通
过add来弹出添
加扩展的向导, eclipse中有很

多扩展, 有很多很实用的, 比如helloworld中就用到了actionsets和pers
pectiveextens
ions这两个扩展点, 以后我们还

会介绍别的扩展

对应的代码段:

   <extension
         point="org.eclipse.ui.actionSets">
      <actionSet
            label="Sample Action Set"
            visible="true"
            id="MyPlugin.actionSet">
      ...
      </actionSet>
   </extension>
   <extension
         point="org.eclipse.ui.perspectiveExtensions"&
gt;
      <perspectiveExtension
            targetID="org.eclipse.ui.resourcePerspective&qu
ot;>
       ...
      </perspectiveExtension>
   </extension>

extension point page: 你可以设置自己的扩展点, 让别的插件来扩展. 
这部分有的好
介绍了, 以后再说,哈~

source page: 如果你实在熟的不得了, 也可以直接改源代码,呵呵

[运行插件]

PDE 提供了专门的 runtime workbench 供开发者方便的运行测试插件, 而
不用部署之后
才能运行. 在菜单 run-> run

..., 然后new 一个 runtime workbench 配置,

arguments页面设置 workspace data , 这个设置运行的workbench的工作
区存在哪儿
jres 设置运行这个运行时平台用的jre
program arguments 中可以设置nl,os,ws等参数, 如果想测试国际化插件
, 可以在这里
改变nl,来测试

翻到plugin and fragment页: 默认的, 工作区里的所有插件都运行, 如果
有的插件你不
想测试, 不想让它运行, 可以选

第三项,然后在出现的选择框中去掉不要的插件.

配置好后, 既可以运行, 也可以测试

如果你运行的测试平台用的jre是1.4以上版本, 就可以进行热替换 , 就是
你还代码改变
后,编译出新的class,可以在不

重新启动runtime workbench的情况下, 直接把旧的class替换掉. 推荐使
用.

[部署插件]

如果你已经开发好你的plugin, 打算部署你的插件, 那很简单, 菜单 exp
ort->
deployable plug-ins and features,

之后选择你要导出的插件, finish 就ok了

不过这个导出功能是有bug的, 它会事先check所有插件的dependency, 如
果dependency
有问题就不能导出, 但是有时有

的旧的插件的dependency没有及时更新,导致check时出错, 不能导出, 这
个在wsad里面
我碰过好几次, 也很郁闷的. 这

个估计会在3.0里面fix, 现在我们也是无奈之下,自己写了一个ant, 然后
用ant导出. 其
实都是一样的

好了, 5.1快到了, 我也要休息几天, 等过了5.1再写, 祝大家节日快乐啊
 ^_^


========== * * * * * ==========
返回