关于Eclipse中开发插件(二)

摘要:
原始插件中每个设置项的描述。xml文件:附加生成的文件代码:1˂?

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

附上生成的文件代码:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <?eclipse version="3.4"?>
 3 <plugin>
 4    <extension
 5          point="org.eclipse.ui.actionSets">
 6       <actionSet
 7             label="Sample Action Set"
 8             visible="true"
 9             id="myplugin.actionSet">
10          <menu
11                label="Sample &amp;Menu"
12                id="sampleMenu">
13             <separator
14                   name="sampleGroup">
15             </separator>
16          </menu>
17          <action
18                label="&amp;Sample Action"
19                icon="icons/sample.gif"
20                class="myplugin.actions.SampleAction"
21                tooltip="Hello, Eclipse world"
22                menubarPath="sampleMenu/sampleGroup"
23                toolbarPath="sampleGroup"
24                id="myplugin.actions.SampleAction">
25          </action>
26       </actionSet>
27    </extension>
28 </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 = "libmysql-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文件里设置的,如果要升级以前的老插件,可能需要一个对照表.如下图:

关于Eclipse中开发插件(二)第1张

 build.properties文件

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

其内容如下:

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

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

关于Eclipse中开发插件(二)第2张

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

关于Eclipse中开发插件(二)第3张

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中开发插件(二)第4张

关于Eclipse中开发插件(二)第5张

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

对插件等的配置:

关于Eclipse中开发插件(二)第6张

关于Eclipse中开发插件(二)第7张

免责声明:文章转载自《关于Eclipse中开发插件(二)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jq获取img高度(动态生成的image高度为0原因)ThingJS demo展示:3D场景轻松切换下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

zookeeper 日志输出到指定文件夹

最近,我在学习ZookeperStormKafka。顺便说一下,我在本地建立了一个集群。我遇到了Zookeeper日志输出路径的问题。我发现设置log4j。Zookeeper中的属性无法解决日志路径问题。我发现解决方案如下:1.修改log4j属性,您应该能够更改它。我更改了红色粗体,但仍然没有生效。#定义要移动的默认值...

Java 读取ANSI文件中文乱码问题解决方式[转]

Filefile=newFile(路径);InputStreamin=newjava.io.FileInputStream(文件);BufferedReader读取器=新的BufferedReader(读取);FileInputStreamin=newFileInputStream(文件);byte[]b=新字节[3];内容如下(b);...

dbeaver 驱动安装

一、背景:在Windows10安装dbeaver数据库连接工具,点“测试连接”的时候出现报错如下:ErrorresolvingdependenciesMavenartifact'maven:/mysql:mysql-connector-java:RELEASE'nofound经网上查询是dbeaver驱动无法下载的问题。二、解决方法:打开“窗口”-˃“首选项...

uni-app 安卓和IOS更新方案

热更新资源,即重新安装应用程序,并更新js等前端代码。Android平台更新方案,详见上一篇文章https://www.cnblogs.com/tiandi/p/15331522.html二、2015年,IOS平台苹果发布了一项规定,禁止用户在应用程序中被提示进行版本更新。无法直接更新通用iOSAppstore的安装包。应用程序启动后,检查是否有新版本,该版...

图卷积神经网络(GCN)入门

不得不专门为GCN开一个新篇章,表示其重要程度。图卷积神经网络,实际上跟CNN的作用一样,就是一个特征提取器,只不过它的对象是图数据。总地来说,图数据既要考虑节点信息,也要考虑结构信息,图卷积神经网络就可以自动化地既学习节点特征,又能学习节点与节点之间的关联信息。GCN的本质目的就是用来提取拓扑图的空间特征。理解图卷积神经网络主要有两类,一类是基于空间域或顶...

一些替代Xshell的软件推荐

TransmitTransmit是一个30美元价格的共享软件,它覆盖了几乎所有的常用功能,包括远程文件编辑和文件夹同步,尽管其有30美元的价格,很多Windows用户也希望Transmit能出一个Win版的。FireFTPFireFTP是一个Firefox扩展,能直接集成一个强大的FTP客户端到我们最喜爱的浏览器Firefox上。CyberduckCyber...