枫林在线>>程序设计>>讨论区 [快速回复] [上一主题] [下一主题] Dev_Tool/Eclipse/(Eclipse)
[340912] 主题: Eclipse零起步系列讲座(十)
作者: little 标题: Eclipse零起步系列讲座(十) [转载]
昵称: 渺小・Happy^_^ 来自: 192.168.*.*
经验值: 13287 发贴时间: 2005年04月25日 11:26:03 (UTC +08:00)
等级: 博大精深 长度: 6100字
Eclipse零起步系列讲座 (十)

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

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

(正文)



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

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

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

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

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

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

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

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



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

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

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

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

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

classpath了.

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



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

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


打开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, compatible等等, 具体什
么意思可以参看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"/>
      <import plugin="org.eclipse.ui"/>
   </requires>


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

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

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

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

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

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

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

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

多扩展, 有很多很实用的, 比如helloworld中就用到了actionsets和perspectiveextens
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">
      <perspectiveExtension
            targetID="org.eclipse.ui.resourcePerspective">
       ...
      </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, 打算部署你的插件, 那很简单, 菜单 export->
deployable plug-ins and features,

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

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

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

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

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


========== * * * * * ==========
每页条 |◀ ◀ 第/1页 ▶ ▶|
Top

| 用户注册 | 密码重置 | 在线用户 | 常见问题 |

Copyright © 2001-2025 枫林在线(www.FengLin.info) All Rights Reserved
时间显示基于用户时区设置:Asia/Shanghai (UTC +08:00)
页面运行使用19.27毫秒