当前页面: 开发资料首页 → Eclipse 专题 → Eclipse插件开发系列(3):Hello World插件(从无到有版)
摘要: eclipse 插件 plugin.xml
作者:陈刚,桂林人,97年毕业于广西师范大学数学系,暂于IBM中国研究中心以外包人员身份从事软件开发(2004.2-?),专注基于java平台的软件开发。
email: glchengang@hotmail.com
blog: glchengang.yeah.net
一、新建项目。
按照上一篇的新建插件项目的方法,新建一个名为myplugin2的插件项目,注意:在最后一步选择“建立白空插件项目”,除此,其它都一样。截图如下:
附注:发现又有上一篇的错误,中文版的Eclipse在新建项目时,比较容易有“由于类路径错误(不完整或涉及循环),所以未构建项目。”这类的错误。好办,因为中文包只是一些文本文件,对开发没用,用前面一篇所说的方法删除那些对中文包的引用(前面字符为ECLIPSE_HOME_LANGUAGE_LINK…….),如下图:
二、插件开发的几个关注点。
a) 库引用。如上附注所说库引用是在建立插件初期要设置好的地方,不过一经设置基本不需要再改变。功能类似于JDK的classpath或者Jbuilder里的库引用。
b) 插件JAVA源代码。今后主要的工作,狂写代码吧。主要都是一些*.JAVA文件。
c) 项目根目录下的plugin.xml文件。这个文件是插件的入口文件,Eclipse根据这个文件中的设置来加载插件。代码写完了,要让Eclipse加载你的代码就要在这里面做些手脚了,这些手脚有个术语叫“设置扩展点”。象在Eclipse的加个主菜单、视图、按钮,都在这个文件里面做不同的扩展点,后面的教程会看到这个文件的使用。要人会说那我开发一个系统会有很多的菜单和按钮,那是不是都要设置这个文件呢?回答:不必,这里面只设置主要和Eclipse接壤的扩展点,其它系统里的菜单按钮就没必要了,今后会讲到。
三、设置库引用。
在删除了上面附注所说的无用且出错的引用,接下来我们要加入一些开发插件要用到的库。是那些呢?呵呵,前面我们还是用向导建立了一个helloword插件吗,参考它的就行了。如下图:
手工加可真累,这里有个好办法。把目录C:\eclipse2.1.3\eclipse\workspace\myplugin\下的.classpath文件拷贝到C:\eclipse2.1.3\eclipse\workspace\myplugin2目录就行了。所有关于库引用的设置全保存在这个文件中。最后别忘记刷新一下项目,如下图所示:
附注说明:
有些文章在这里是用“文件>导入...>外部插件和段”来提供插件开发支持库的引用,本文不采用这种方法,因为这种会将支持库(也是一种插件项目)会新建很多相应项目,让开发界面显得很乱。还不如本文所用的建立库引用变量的方法方便简洁。
四、写源代码。
a) 新建一个包。方法如下图所示。
包名如下:
结果如下:
b) 然后将上一章的myplugin的SampleAction直接移动本项目myplugin2中就可以了(Eclipse支持鼠标拖拉操做)。
c) 本文SampleAction做了一些小修改(删除了注释和构造函数)。代码如下:
<table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellSpacing=0 cellPadding=6 width="95%" align=center border=0>
<tr> <td style="WORD-WRAP: break-word" bgColor=#f3f3f3>public class SampleAction implements IWorkbenchWindowActionDelegate {
五、在plugin.xml文件中加入扩展点的代码。
库将本项目plugin.xml文件打开,并转到其源代码视图。将如下代码加入到“”之后。(这些xml还是从上一章的项目搬过来的
<table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellSpacing=0 cellPadding=6 width="95%" align=center border=0>