zoukankan      html  css  js  c++  java
  • Eclipse开发RCP项目的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中设置

    Java代码   收藏代码
    1. -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

    • 比如声明一个视图
    Xml代码   收藏代码
    1. <extension  
    2.       id="com.plugin.sample.sampleView"  
    3.       point="org.eclipse.ui.views">  
    4.    <category  
    5.         name="Sample"  
    6.         id="com.plugin.eclipse.sample">  
    7.    </category>  
    8.    <view  
    9.          category="com.plugin.eclipse.sample"  
    10.          class="com.plugin.eclipse.sample.views.SampleView"  
    11.          icon="icons/sample.png"  
    12.          id="com.plugin.eclipse.samle.views.sampleView"  
    13.          name="SampleView">  
    14.    </view>  
    15. </extension>  
    • 比如某个菜单只作用于java类
    Xml代码   收藏代码
    1. <extension  
    2.          point="org.eclipse.ui.popupMenus">  
    3.       <objectContribution  
    4.             id="com.plugin.eclipse.sample.popupMenu"  
    5.             objectClass="org.eclipse.core.resources.IFile"  
    6.             adaptable="true"  
    7.             nameFilter="*.java">       
    8.          <menu  
    9.                label="Sample"  
    10.                path="additions"  
    11.                id="com.plugin.eclipse.sample.menu"  
    12.                icon="icons/sample.png">  
    13.             <separator  
    14.                   name="group">  
    15.             </separator>  
    16.          </menu>  
    17.           <action  
    18.                 class="com.plugin.eclipse.sample.SampleAction"  
    19.                 enablesFor="+"  
    20.                 icon="icons/sample.png"  
    21.                 id="com.plugin.eclipse.sample.sampleAction"  
    22.                 label="SampleAction"  
    23.                 menubarPath="com.plugin.eclipse.sample.menu/group">  
    24.          </action>  
    25.       </objectContribution>  
    26.    </extension>  
    转载自:http://fxzcollege6.iteye.com/blog/2013055
  • 相关阅读:
    《将博客搬至CSDN》
    所谓找链表中点
    虚函数
    编辑距离
    数组移位
    DFA
    Single Number III
    XOR异或解惑
    First Bad Version
    while(!in.empty()) 和 while(in.size())
  • 原文地址:https://www.cnblogs.com/wwssgg/p/14706709.html
Copyright © 2011-2022 走看看