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程式碼- -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
- 比如宣告一個檢視
- <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類
- <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>