eclipse插件开发读书笔记1-开发第一个插件程序
这一章主要介绍了:
如何创建一个插件工程
“插件开发”透视图的介绍
插件的工程结构和详细介绍
插件程序的运行、调试和发布
1、创建插件工程
《eclipse插件开发学习笔记》中使用的是3.2版本的eclipse,现在官网上已经出到4.3版本的了。在之前做项目的时候,用的是3.5版本的,用习惯了,所以在本文中,选用版本号为3.5的。
不知道怎么看自己的版本?
查看安装目录下的InstallDirectory\eclipse\.eclipseproduct文件:
name=Eclipse Platform id=org.eclipse.platform version=3.5.0
1.1 新建插件
图1 新建plugin工程
点击next会弹出:
图2 插件项目页
项目设置中,设置源码文件夹和class存放的文件夹,选择的版本是3.5,osgi框架(equinox和standard)默认不去设置,这两种区别在插件的manifest.mf文件中,equninox使用了一些特定于eclipse的头及属性,如果不希望使用这些扩充,可以选择standard,关于这两个,我现在也不太明白。
图3 插件内容
ID:eclipse通过此标识来识别插件
Provider:提供插件程序的人或者组织
Activator:可以起别的名字,它是用来管理插件的生命周期的
Rich Client Application:问你是否想创建RCP程序,选No,以后可以再添加。
图4 模板页
用户可以自定义模板,现在先不提。我们选择带视图的模板。(如果前面设置了OSGI,则这个模板页的内容全是与OSGI相关的)
图5 主视图设置
第二行是这个视图的类:
第三行是运行该插件时,打开该视图显示的名称:
第四行是视图所归属类别的标识,用默认的就好,记住要唯一
第五行是类别名称,会在查看视图的是看到:
2、插件开发的几个透视图
插件视图
在这个视图内可以方便的查看插件之间的依赖关系,引用关系,以及可以快速的将插件导入到workspace中。
插件依赖项视图
在这个视图中可以方便的查看某一个插件的依赖关系,真的很方便
已注册插件视图
这个视图可以查看当前workspace中所有已发现插件信息,可以注意到,这里面是不会有我们新建的插件的,因为它并没有注册进来。
清单编辑器
这个相当的有用而且重要。
这里面的内容以后会慢慢提到。
3、插件工程结构
我们新建好了插件工程后,看看都有哪些东西:
- 源代码文件src
- 插件文件
- 清单文件MANIFEST.MF
- 插件配置plugin.xml
- 项目管理build.properties
- 依赖库
- 其他
4、插件文件
这一部分是重点。
plugin.xml
该配置文件是用来记录插件的扩展点和扩展的。
对比一下两张图就会发现其实描述的是同一个东西。
该文件中主要有三个标签元素:
- <plugin>
- 这个是主体,包含了所有扩展点的声明,以及扩展的配置
- <extension>:扩展
- 定义了对其他插件的扩展。
- point:所引用的扩展点标识
- id:此扩展实例的标识
- name:扩展提供给用户的名称
- <extension-point>:扩展点
MANIFEST.MF
该文件用来提供关于捆绑软件的描述信息。
build.properties
该文件记录了需要构建的元素列表,这样PDE就可以通过这个文件来构建插件,最后的插件中不需要再包含这个文件。
两张图对比发现,其实说的也是同一个东西。
5、插件类
package com.plugindev.bookaddress; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; /** * The activator class controls the plug-in life cycle */ public class Activator extends AbstractUIPlugin { // The plug-in ID public static final String PLUGIN_ID = "com.plugindev.bookaddress"; // The shared instance private static Activator plugin; /** * The constructor */ public Activator() { } //启动插件时调用该方法 /* * (non-Javadoc) * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) */ public void start(BundleContext context) throws Exception { super.start(context); plugin = this; } //卸载插件时调用该方法 /* * (non-Javadoc) * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) */ public void stop(BundleContext context) throws Exception { plugin = null; super.stop(context); } /** * Returns the shared instance * * @return the shared instance */ public static Activator getDefault() { return plugin; } //获得插件中图像的描述符 /** * Returns an image descriptor for the image file at the given * plug-in relative path * * @param path the path * @return the image descriptor */ public static ImageDescriptor getImageDescriptor(String path) { return imageDescriptorFromPlugin(PLUGIN_ID, path); } }
可以看到,这里利用了单例模式来管理。
获取插件实例的方法:
AbstractUIPlugin.getDefault();
6、运行
运行前要先配置一下,这个跟运行java程序是不一样的:
我们可以在start()处设置断点,这样就会发现在启动后,切换视图的时候,会命中该断点。
7、发布
选中项目,然后export。
从压缩文件中可以看到,里面并没有build.properties。
导出后,我们可以把这个jar放到eclipse的plugins文件夹下,再重启,我们就可以看到安装成功了。
总结:
通过这一章的学习,了解到了插件程序的入口类,了解了插件程序的配置文件。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。