在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文件中。
該文件會在插件或者產品導出的時候使用到。