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文件夹下,再重启,我们就可以看到安装成功了。

 

总结:

通过这一章的学习,了解到了插件程序的入口类,了解了插件程序的配置文件。

eclipse插件开发读书笔记1-开发第一个插件程序,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。