原plugin.xml文件各个设置项的说明:

附上生成的文件代码:

 <?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.ui.actionSets">
<actionSet
label="Sample Action Set"
visible="true"
id="myplugin.actionSet">
<menu
label="Sample &amp;Menu"
id="sampleMenu">
<separator
name="sampleGroup">
</separator>
</menu>
<action
label="&amp;Sample Action"
icon="icons/sample.gif"
class="myplugin.actions.SampleAction"
tooltip="Hello, Eclipse world"
menubarPath="sampleMenu/sampleGroup"
toolbarPath="sampleGroup"
id="myplugin.actions.SampleAction">
</action>
</actionSet>
</extension>
</plugin>

详细介绍其中的各项设置如下:

>>>>>>>>>>>>>>↓↓↓↓↓↓↓↓<<Eclipse从入门到精通(第一版)-----旧知识.....>>>>↓↓↓↓↓↓↓↓<<<<<<<<<<<<<<<<<<<<<

(1)<plugin>项

<plugin

  id="myplugin2"

  name="Myplugin2 插件"

  version="1.0.0"

  privider-name=""

  class="myplugin2.Myplugin2Plugin">

<plugin>是plugin.xml的主体.

id:插件的唯一标识.实际项目中一般加上包名或者网址来命名id .例如:eclipse的tomcat插件是这样命名的:org.eclipse.tomcat,这样

在世界上就不会有插件的标识名和你重名了.以后在某些扩展点中的属性也会用到标识符做为名称的前缀.

name:插件的名称,可以不唯一.

version:插件版本号.

provider-name:插件开发商的名称.可以写上作者姓名或者公司名称.

class:插件类的名称.即插件项目自动生成的MypluginPlugin2.java文件的类.前面加上包名.

(2)<runtime>项

<runtime>

  <library name="myplugin2.jar">

    <export name=""/>

  </library>

</runtime>

说明这里是声明插件运行时需要的jar包.例如:插件要连接MySQL数据库时需要它的一个包.

则定义如下,其中"lib\"是该包所在路径.本插件自身的jar包也要声明.而且本插件在打包时,

将以myplugin2.jar为名打包.

<runtime>

  <library name="myplugin2.jar">

    <export name=""/>

  </library>

  <library name = "lib\mysql-connector-java-3.0.9-stable-bin.jar">

</runtime>

(3)<requires>项

<requires>

  <import plugin="org.eclipse.ui">

  <import plugin="org.eclipse.core.runtime"/>

</requires>

说明:在requires域中定义了该插件所要使用的依赖插件,现在有两项就够了.随着开发的不断深入.这里将会添加更多对其他插件的引用.

>>>>>>>>>>>>>>↑↑↑↑↑↑↑↑↑↑<<Eclipse从入门到精通(第一版)-----旧知识.....>>>>↑↑↑↑↑↑↑↑↑<<<<<<<<<<<<<<<<<<<<<

<extension>项设置要扩展的扩展点,它是非常重要的一项.

<extension point="org.eclipse.ui.actionSets">设置了本插件的扩展点,actionSets是指Eclipse的菜单,菜单项和工具栏按钮的扩展点.

<actionSet>项表示 一个action组(菜单,按钮).label是显示的名称,id其唯一的标识符.

只要保证在本plugin.xml文件中不存在重复的id就行了.visible指设置的按钮或菜单是否显示.如果设置成false,则不显示.(注意:看visible设置的效果,要先将"透视图"关掉再重新打开)

<menu>是<actionSet>下的子项,它表示在Eclipse中插入显示一个名为"样本菜单(M)"的主菜单.

separator标签是一个结束符,它可以对菜单分组.

<action>也是<actionSet>下的子项,由它设置菜单,按钮,icon是图片的路径.

如包名上也要加上,menubarPath表示这个action做成一个菜单项.放在上面<menu>定义的主菜单下,

toolbarPath表示把这个action再做成一个工具栏按钮.id是标识符,建议设置成和class项一样的名称.

以上仅仅是Eclispe的扩展点中的一种.此外还有其他的扩展点共有一百多种之多.我们只需要熟悉一些常用的就可以了.

如视图的扩展点org.eclipse.ui.views  编辑器的扩展点org.eclipse.ui.editors等.

为HelloWorld修改plugin.xml

MANIFEST.MF文件位于META-INF目录下.

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Myplugin3
Bundle-SymbolicName: myplugin3;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: myplugin3.Activator
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.core.resources
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy

各项配置说明如下:

Manifest-version:Manifest版本号.

Bundle-ManifestVersion:插件的Manifest版本号.

Bundle-Name:插件的名称,不用保证唯一性.

Bundle-SymbolicName:插件的唯一标识,以后再某些扩展点的属性中也会用到该值做前缀.

实际项目中一般加上包名或者网址名来命名SymbolicName,例如Tomcat插件命名为org.eclipse.tomcat.这样能保证世界上不会有和自己重名的.

Bundle-Version:插件版本号.

Bundle-Activator:定位Activator类.要用类全名(包名+类名).

Bundle-Localization:用于设置plugin.xml的国际化

Require-Bundle:定义了本插件所依赖的其他插件.当前只有两项依赖,随着开发的深入将会不断的添加依赖插件进来.比如,以后要用的Draw2D来画图,则要添加插件org.eclipse.draw2d.

Eclipse-LazyStart:插件是否懒加载

Bundle-Vendor:插件开发商的名称,可以写上作者姓名或者公司名称,这里没用上

Bundle-ClassPath:定义了插件所依赖的JAR包,例如插件要连接MySQL就需要依赖JDBC连接包.Bundle-ClassPath相当于项目库引用的作用.插件就靠这项设置来找到自己依赖的JAR包.其设置方式和Require-Bundle相似.也也是用逗号隔开各项,本插件还很简单,不需要依赖其他JAR包.所以这一项也没有用上.

MANIFEST.MF中的大部分设置,对于Eclipse老版本都是在plugin.xml文件里设置的,如果要升级以前的老插件,可能需要一个对照表.如下图:

build.properties文件

此文件定义了一些在编译插件打包插件时说需要的信息.其中bin.includes用来设置要包含到编译输出中的资源文件或者目录.

其内容如下:

source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml

最重要的就是plugin.xml文件的设置.掌握它是掌握插件开发的必经之路.

按照图示做好修改之后,在GUI上的修改最终会反应到MANIFEST.MF文件上.如下:

Bundle-SymbolicName是插件的唯一标识符,它改变了,那么Activator类的PLUGIN_ID变量也应该相应的改变值为cn.com.kxh.myplugini.

如果仅仅按照上面的修改的话会报错,Plug-ins declaring extensions or extension points must set the singleton directive to true

所以在后边又加上:Bundle-SymbolicName: cn.com.kxh.myplugin;singleton:=true就可以了.

再次运行插件,选择主菜单,"帮助--->关于Eclipse----> 见下图"

可以看到在Eclipse中已经可以看到myplugin插件的信息.

对插件等的配置:

关于Eclipse中开发插件(二)的更多相关文章

  1. eclipse中egit插件使用

    这篇文章当时制作有点粗糙,建议阅读升级版:eclipse中egit插件使用--升级版 使用git作为项目的代码管理工具现在是越来越火,网上有各种各样的文章.博客.讨论,其中以命令行居多.使用eclip ...

  2. 【转】eclipse中egit插件使用

    原文网址:http://my.oschina.net/songxinqiang/blog/192567 eclipse和git这个两个工具的使用人数都是相当多的,在eclipse里面也有egit插件来 ...

  3. eclipse中svn插件的安装与使用

    eclipse中svn插件的安装与使用 一.    eclipse中svn插件的安装 eclipse里安装SVN插件,一般来说,有两种方式: 直接下载SVN插件,将其解压到eclipse的对应目录里 ...

  4. Openfire3.9.3源代码导入eclipse中开发配置指南

    这篇文章向大家介绍一下,如何把openfire3.9.3源码导入eclipse中,编译并启动的详细过程. 首先得感谢这篇文章的作者,http://www.micmiu.com/opensource/o ...

  5. 解决eclipse中git插件中的cannot open git-upload-pack问题

    有时候在eclipse上使用插件egit向github或者osc上同步代码时,有时候会发现出现cannot open git-upload-pack这个问题. 一般引起这个问题的原因有两个:一.网络问 ...

  6. eclipse中svn插件的安装

    Svn(Subversion)是近年来崛起的版本管理工具,在当前的开源项目里(J2EE),几乎95%以上的项目都用到了SVN.Subversion项目的初衷是为了替换当年开源社区最为流行的版本控制软件 ...

  7. eclipse中svn插件的安装和tortoiseSVN的安装

    在项目的开发中一般都需要用到版本控制,其中用的比较多的就是svn(subVersion),svn的使用既可以以插件的形式,也可以以客户端的形式使用.今天就介绍一下eclipse中svn插件的2种安装方 ...

  8. eclipse中jetty插件安装

    注:本文来源于:<eclipse中jetty插件安装> 一.eclipse中jetty插件安装: 打开eclipse,依次点击菜单Help->Eclipse Marketplace, ...

  9. 在Eclipse中开发C/C++项目

    摘要:通过本文你将获得如何在Eclipse平台上开发C/C++项目的总体认识.虽然Eclipse主要被用来开发Java项目,但它的框架使得它很容易实现对其他开发语言的支持.在这篇文章里,你将学会如何使 ...

随机推荐

  1. as3+java+mysql(mybatis) 数据自动工具(四)

    现在介绍一下只配置 as3 与 java 公用的数据类,这种配置一般是该数据类只需要在 as3 与 java 之间转换,跟数据库没有关系.比如在客户端与服务端的数据交换中,需要定义一个统一返回请求的数 ...

  2. FZU 2125 简单的等式

    Problem Description 现在有一个等式如下:x^2+s(x,m)x-n=0.其中s(x,m)表示把x写成m进制时,每个位数相加的和.现在,在给定n,m的情况下,求出满足等式的最小的正整 ...

  3. wuzhicms私密下载链接生成

    加载函数库:load_function('content','content'); echo private_file('http://dev.wuzhicms.com/uploadfile/2014 ...

  4. hadoop源码导入eclipse

    1,下载hadoop源码 下载链接 http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.2.0/   为2.2.0的源码, 也可以 ...

  5. HW6.12

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  6. POJ1185 - 炮兵阵地(状态压缩DP)

    题目大意 中文的..直接搬过来... 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平 ...

  7. [iOS基础控件 - 4.2] APP列表 字典转模型Model

    A.使用字典加载数据的缺点 1.用户自行指定key,容易出错 2.存入.取出都需要key,容易混乱   B.模型 (MVC中的model) 1.字典与模型对比: (1)字典:存储数据,通过字符串类型的 ...

  8. 在多线程中进行UI操作

    那么在子线程中的UI操作如何处理呢?有两种方法: 一:在子线程,你需要进行的UI操作前添加dispatch_async函数,即可将代码块中的工作转回到主线程 dispatch_async(dispat ...

  9. HBase 使用场景和成功案例

    有时候了解软件产品的最好方法是看看它是怎么用的.它可以解决什么问题和这些解决方案如何适用于大型应用架构,能够告诉你很多.因为HBase有许多公开的产品部署,我们正好可以这么做.本章节将详细介绍一些人们 ...

  10. 转载:iPhone 6 Plus 屏幕宽度问题 375 vs 414

    首先看一张比较简单明了的 iPhone 6 与 iPhone 6 Plus 对比图,来自 PaintCode 的<The Ultimate Guide To iPhone Resolutions ...