RCP: MANIFEST.MF, plugin.xml, build.properties三種文件的區別

在Eclipse插件開發中, MANIFEST.MF, plugin.xml, build.properties是三種最多見的文件,因爲它們共享同一個編輯器(Plug-in Manifest Editor),常常會有插件開發者誤解、混淆了這三個文件的用途。咱們來看看這三個文件有哪些區別。程序員

 

一、在編輯器上的區別框架

咱們來看看Plug-in Manifest Editor是什麼樣子的:eclipse

 

上圖是manifest編輯器的Overview籤頁的項目。注意編輯器的底部,有多個籤頁。編輯器


其中,Overview、Dependencies、Runtime,三個籤頁是MANIFEST.MF文件的圖形化編輯器。ui

Extensions、Extension Points,兩個籤頁是plugin.xml文件的圖形化編輯器。插件

Build籤頁則是build.properties文件的圖形化編輯器。code

最後的三個籤頁MANIFEST.MF、plugin.xml、build.properties分別爲對應文件的文本編輯器。orm

 

二、功能上的區別xml

咱們知道,靜態文本一般用來做爲配置文件。blog

MANIFEST.MF對於Java程序員來講是個常見的文件(不知道的回去面壁),它用來標識當前jar包的各類屬性的,若是你作過「可雙擊啓動的jar包」,應該能想起這個文件。

MANIFEST.MF裏有通常屬性,也有一些和其餘體系約定俗稱的屬性,也能夠添加自定義的屬性。

好比在插件開發裏,一個插件項目的MANIFEST.MF基本會具有以下屬性:

 

有些插件開發者會疑惑。爲何一樣是一個jar包,有些會被Eclipse認同爲bundle(不懂這個詞的插件開發者去面壁),有些只能認同爲普通的jar。

這個MANIFEST.MF的內容就是關鍵了,普通的jar包是不會具有這些bundle信息的。

在Eclipse(具體來講是equinox)找到這個插件jar的時候,會讀取其MANIFEST.MF文件,以獲取其名稱,版本號,依賴關係,等。

而後完成咱們所知的插件加載過程。

便是說,MANIFEST.MF是用來配置插件的元信息的,其屬性的名和值,須要符合OSGi規範。

OSGi以MANIFEST.MF爲依據,來啓動插件,計算依賴性,決定約束(constraint)等等,其餘的OSGi框架好比felix,也能夠讀取識別它。

該文件的使用發生在插件加載以前。

 

plugin.xml是爲Eclipse的擴展點和擴展服務的。

不少人混淆了擴展點和擴展的概念。

下圖所作的操做,相信插件開發人員都作過:

 

這一系列的完整的操做,咱們應該稱之爲「選擇了org.eclipse.ui.editors擴展點,並添加了一個擴展」

擴展點,便是Extension Point,擴展點自己其實不具有功能,它僅僅只是個「格式規範」,一個「schema」,本質上,它是個類DTD定義。

擴展,便是Extension,它是真正的配置項(XML格式),用戶根據擴展點的約束填入合適的值,以完成配置。

這裏不會贅述一個擴展是如何生效的,有興趣的同窗能夠嘗試本身定義一個「擴展點」,而後完善它的exsd定義文件。

在代碼裏查詢擴展點內容使用以下代碼:

Platform.getConfigurationElementsFor(String extensionPointId);

如此可知,plugin.xml是爲了擴展點和擴展服務的,是Eclipse的專屬內容。它的使用發生在插件被加載以後。

 

build.properties,屬性文件相信你們並不陌生,插件在打包的過程當中,須要提供給ant腳本一些變量,這些變量就記錄在build.properties文件中。

該文件會在插件或者產品導出的時候使用到。

相關文章
相關標籤/搜索