此文章部分转自:http://fxzcollege6.iteye.com/blog/2013055

关于plugin.xml文件我还总结过一篇文章:http://www.cnblogs.com/DreamDrive/articles/4586150.html

关于plugin.xml文件编辑视图如下:

在一个eclipse plugin的开发中plugin.xml是必须的,那么我们需要关注哪些点

我们用eclipse中的plug-in manifest edtor打开,我们可以看到在editor区域中看到几个tab页,下面分别介绍:

Overview 
这里是这个插件工程的一些基本信息介绍,比如插件的名字,版本,id,编译执行环境等。我们需要关注的是右下角的Testing,这里提供了我们在开发中运行插件的两种方式普通和debug模式。

当然说到运行,我们还有其他的方式:

  • 在package或navigator视图下选择工程右键>Run As>Run Configuration
  • 直接在toolbar区域选择Run As/Debug As进行运行时的配置

这里说一个在开发中遇到的问题,在开发的开始阶段老是遇到java.lang.OutOfMemoryError: PermGen space,开始以为eclipse.ini中VM的配置参数过低,但在进行了相应的修改后启动仍然内存溢出,最后是在configurations中的Argument中显示配置VM参数解决,比如

在VM arguments中设置

-Xms128m -Xmx256m -XX:PermSize=128m -XX:MaxPermSize=128m 

难道是打开的plugin运行时启动的eclipse会吃掉主的内存,导致分配的太少而溢出?

既然说到run configuration,那么可能还有几个需要关注

  • Main tab下的一些配置
  • Plug-ins下lanch with中的插件可能默认会全部选中,其实我们可以先Deselect All,然后选中我们需要运行的plugin,再Add Required plug-ins


Dependecies 
这里是这个插件工程需要依赖的各种插件,这里包括依赖eclipse本身的各种组件。比如运行时org.eclipse.core.runtime,比如你需要在你插件工程中打开java文件,那么需要org.eclipse.jdt.core、org.eclipse.ui.workbench.texteditor等,同时你也可以增加第三方依赖插件。通过Add按钮,在弹出窗中输入相应的插件添加

Runtime 
我们可以看到两个地方需要关注:

  • Exported Packages:这个是你这个插件中向外暴露的包,你可以添加需要向外暴露的结构,那么应用你这插件的其他工程就可以访问你相应的接口
  • Classpath:当前插件工程运行依赖的第三方jar包,一般我们把第三方依赖的包放在工程根目录下的lib文件夹内

Extensions/Extensions Points 
扩展和扩展点,前者是指引入其他插件的扩展点,后者是当前工程暴露出的扩展点。

  • 比如你的插件工程中有视图,那么你需要引入org.eclipse.ui.views在这个扩展点下,你可以定义相关的视图。这里引入也会在plugin.xml中体现:point="org.eclipse.ui.views"
  • 如果这个扩展点下可以有多个view视图,也可以有category标签会将相应的视图归类,比较直观的是在eclipse的window>show view>...中体现

至于扩展点,网上例子较多,在实际项目中没有使用,不便多说

Build 
这是编译插件时需要包含的资源,在Binary Build的时候勾上需要的资源吧,记得在开始的时候老是忘记lib包,导致编译错误或使用就报错

MANIFEST.MF和build.properties 
这里其实对前几个tab页中内容自动生成,比如包含Require-Bundle、Bundle-ClassPath、Export-Package等

plugin.xml 
这部分内容是比较重要的,比如描述了各种actionSets,extension point

扩展点point="org.eclipse.ui.views"

    • 比如声明一个视图

         <extension
               id="com.plugin.sample.sampleView"
               point="org.eclipse.ui.views">
            <category
                    name="Sample"
                    id="com.plugin.eclipse.sample">
            </category>
            <view
                  category="com.plugin.eclipse.sample"
                  class="com.plugin.eclipse.sample.views.SampleView"
                  icon="icons/sample.png"
                  id="com.plugin.eclipse.samle.views.sampleView"
                  name="SampleView">
            </view>
         </extension>
  • 比如某个菜单只作用于java类

扩展点:point="org.eclipse.ui.popupMenus

xml代码

<extension
         point="org.eclipse.ui.popupMenus">
      <objectContribution
            id="com.plugin.eclipse.sample.popupMenu"
            objectClass="org.eclipse.core.resources.IFile"
               adaptable="true"
               nameFilter="*.java">
         <menu
               label="Sample"
               path="additions"
               id="com.plugin.eclipse.sample.menu"
               icon="icons/sample.png">
            <separator
                  name="group">
            </separator>
         </menu>
          <action
                class="com.plugin.eclipse.sample.SampleAction"
                enablesFor="+"
                icon="icons/sample.png"
                id="com.plugin.eclipse.sample.sampleAction"
                label="SampleAction"
                menubarPath="com.plugin.eclipse.sample.menu/group">
         </action>
      </objectContribution>
   </extension>

扩展点point="org.eclipse.ui.actionSets

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
   <extension
         point="org.eclipse.ui.actionSets">
      <actionSet
label="Fletcher的工具集"
            visible="true"
            id="fletcher.plugins.actionSet">
         <menu
label="fletcher'menu(&amp;M)"
               id="fletcherMenu">
            <separator
name="fletcherGroup">
            </separator>
         </menu>
         <action
label="fletcher(&amp;S)"
               icon="icons/sample.gif"
               class="fletcher.plugins.SampleAction"
               tooltip="Hello,Eclipse world"
               menubarPath="fletcherMenu/fletcherGroup"
               toolbarPath="fletcherGroup"
               id="fletcher.plugins.SampleAction">
         </action>
      </actionSet>
   </extension>
</plugin>

<!--point="org.eclipse.ui.actionSets":用于设置插件的扩展点,其中"actionSets"对应着Eclipse中的菜单、菜单项和工具栏中按钮的扩增点.-->

<!--  <actionSet>:用于设置一个action组,对应着新增的菜单和按钮.其中的label属性用于设置显示时的名称.Visible属性用于设置对应的菜单或者按钮是否显示.Id属性是作为唯一标识符使用的,注意在一个plugin.xml文件中,要确保其唯一性.-->

<!--  <menu>:作为<actionSet>的子项,该项用于设置在Eclipse环境的菜单栏中添加一个新的主菜单,例如在上面的程序中对应的菜单名称为"样本菜单(&amp;M)".其中的<separator>是一个结束符,用于实现菜单中命令的分组.-->

<!--  <action>:作为<actionSet>的子项,该项用于设置在对应的菜单项和工具栏中的按钮.其中,label属性用于设置对应菜单项显示的名称,当对应着工具栏中的按钮的图标
无法找到时,在按钮位置同样显示这里设置的名称.icon属性用于图标的路径.class属性用于设置单击按钮或者选择菜单中的命令后对应执行的类,注意要将完整的包名写上.
Tooltip属性用于设置悬停时的提示性信息.menbarPath属性表示将该action对应的菜单项放置在<menu>所设置的菜单中.toolbarPath表示将该action同时作为一个
工具栏中的按钮.id属性用于设置唯一性标识.一般和class保持一致即可.-->

[未完成]plugin.xml文件的更多相关文章

  1. [未完成]关于xml文件的解析

    附录一个比较特别的xml文件. MultiNamespaceInlineRequest.xml <?xml version="1.0" encoding="ISO- ...

  2. RCP: MANIFEST.MF, plugin.xml, build.properties三种文件的区别

    在Eclipse插件开发中, MANIFEST.MF, plugin.xml, build.properties是三种最常见的文件,由于它们共享同一个编辑器(Plug-in Manifest Edit ...

  3. 【eclipse插件开发实战】Eclipse插件开发4——插件JDE、PDE开发方式及plugin.xml配置文件结构

    Eclipse插件开发4--插件JDE.PDE开发方式及plugin.xml配置文件结构 开发方式分为:java开发环境JDE开发插件的方式和插件开发环境PDE开发插件方式. 插件通过添加到预定义的扩 ...

  4. Maven-pom.xml文件报错 Plugin execution not covered by lifecycle configuration

    问题: Eclipse中新导入的项目pom.xml文件报错: Plugin execution not covered by lifecycle configuration: org.jacoco:j ...

  5. 史上最全的maven的pom.xml文件详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  6. (六)Maven之pom.xml文件简单说明

    通过前面几部分知识,我们对maven已经有了初步的印象,就像Make的Makefile.Ant的build.xml一样,Maven项目的核心是pom.xml.POM(Project Object Mo ...

  7. 【dom4j xml】使用dom4j处理XML文件--测试过程遇到的问题

    首先 关于dom4j的API,有如下: 当然  其中的实体引用有以下: 测试使用环境: 使用Maven搭建web环境,pom.xml文件配置如下: <project xmlns="ht ...

  8. Maven项目pom.xml文件详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  9. 史上最全的maven pom.xml文件教程详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

随机推荐

  1. linux下开发c++第二弹--helloworld与makefile

    一:hello world sudo vim hello.cpp 输入  g++ -o hello hello.cpp  获得hello 输入  ./hello 运行,显示结果hello world! ...

  2. eclipse svn切换账号登陆问题

    1.当一个人有权限访问文件代码,而另一个账号无法访问该文件代码,要在eclipse上切换账号登陆有权限的账号时,eclipse会用缓存的账号,不会弹出从新输入新账号的窗口. 这样该怎么解决呢? 关闭e ...

  3. Java日期处理类

    1.Date java.util.Date 2.Calendar 日历类,通过getInstance()获取实例对象,可以获取年月日时分秒 3.SimpleDateFormat 日期格式化,forma ...

  4. Python中的基本语句

    本文简单的介绍下Python的几个基本语句. print语句 print可同时打印多个表达式,只要将他们用逗号隔开. >>> name='Gumy' >>> gre ...

  5. C# 生成解决方案失败,点击项目重新生成报找不到命名空间

    1.点击生成解决方案失败,点击项目“重新生成”找不到“XXX”命名空间. 尝试点击"重新生成解决方案"多次,然后点击项目的"重新生成"即可解决.

  6. jeewx的使用_02 解析微信服务器post过来的数据

    如果在微信公众号接入了第三方的URL,那么用户微信服务器的请求将会被推送到第三方的URL上面,那么该如何解析数据呢?下面来分析 找到MessageUtil.java 这个类中有一个parseXml的静 ...

  7. 使用jdk操作 wsdl2java (wedservice)

    打开jdk下的bin目录 看下能否找到"wsimport.exe"这个文件 一般情况下都会有 如果没有则说明你的JDK不支持这个功能 然后在DOS窗口下输入wsimport 敲回车 ...

  8. linx目录结构

    linux中的命令一般存放在/bin目录下的: 以下为linux下的基本目录结构和作用: /根目录./boot引导程序,内核等存放的目录./sbin超级用户可以使用的命令的存放目录./bin普通用户可 ...

  9. 【转】使用GDB调试Coredump文件

    来自:http://blog.ddup.us/?p=176 写C/C++程序经常要直接和内存打交道,一不小心就会造成程序执行时产生Segment Fault而挂掉.一般这种情况都是因为数组越界访问,空 ...

  10. OA系统权限管理设计(转载)

    不论什么系统都离不开权限的管理,有一个好的权限管理模块,不仅使我们的系统操作自如,管理方便,也为系统加入亮点. l         不同职责的人员,对于系统操作的权限应该是不同的.优秀的业务系统,这是 ...