枫林在线论坛精华区>>程序设计 |
[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再写, 祝大家节日快乐啊 ^_^ |
||
========== * * * * * ==========
|
返回 |