1. 程式人生 > >Eclipse開發RCP專案的plugin.xml詳解

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