国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

如何使用 Eclipse 功能部件來定制 Eclipse 行為

2019-11-18 14:48:12
字體:
來源:轉載
供稿:網友

  如何使用 Eclipse 功能部件來定制 Eclipse 行為

級別:高級


假如您想開發插件共享給其他人,那么學習如何有效地使用功能部件是最基本的。本文就如何組織功能部件和優化使用插件開發環境來開發功能部件和插件提出了一些建議,同時介紹了定制 Eclipse 行為的高級技術。即便您只是想學習如何設置 Eclipse,以使您可以自定義任何工作空間的初始化屬性值,或者是學習如何使用鏈接文件來治理您添加到 Eclipse 的組件,本文對您來說也將有所幫助。

構建一個插件是很有趣的:您開始編寫代碼并創建您想要的工具。把插件拷貝到 Eclipse 或一個基于 Eclipse 的產品中的 plupgins 目錄下,這個插件在 Eclipse 運行期環境中就可以使用了。當再一次使用 Eclipse 的時候,插件將被找到,而且經過平臺的啟動處理,它在運行期配置中將是可用的。

但是誰知道或者關心您的插件加入了進來?用戶可以明白您提供的是什么工具嗎?他們可以通過 Eclipse 來禁用、修補或者治理您的組件嗎?答案顯然是否定的。插件本身僅僅是一個插件,而不是與 Eclipse 平臺完全集成的組件。

功能部件包裝插件
假如沒有功能部件,插件是難以駕馭的,通俗地說,不屬于功能部件的插件是未被治理的插件。Eclipse 平臺的啟動過程包括一個配置的步驟。假如一個新的插件被拷貝到 plugins 目錄,或者以其他方式使 Eclipse 在啟動的時候可以找到,配置過程會發現它,但只是通過將新插件的 splash 圖標閃爍兩次來通知您。Eclipse 之所以會發現新的插件,是因為存貯在 .metadate.configplatform 中的當前工作區的配置校驗和發生了變化;由于您沒有向平臺提供一個可以引導用戶做出配置修改的功能部件,Eclipse 也只能是通過 splash-Flash 來提示這一變化。將您的插件打包為一個(或兩個)功能部件,您將獲得如下好處:

在 Eclipse 的配置過程中列出您的組件(在 feature.xml 文件中)所要求的先決條件
使您的組件可以作為 Eclipse 配置的活動部分來治理
創建標記信息,讓使用那些使用運行期環境的用戶可以識別您的組件,并通過一個歡迎頁面來告知用戶您的功能部件所提供的功能(在關聯到您的功能部件的 welcome.xml 文件中)
用 Eclipse 更新治理器可以對您的組件進行修改
不要等到您的插件開發完成后再打包為功能部件。反映在功能部件定義中的設計結果會影響您如何構建您的插件。例如,大多數的 Eclipse 組件都有 UI 功能部件和核心(不是 UI)功能部件。假如您的插件沒有按這種方法進行劃分,您可能會馬上考慮重新設計它們。功能部件也可以用來自動編譯處理被引用的插件。

主要功能部件標識一個產品(但是您有控制權)
雖然功能部件很多,但是當您啟動 Eclipse 的時候,只有一個功能部件處于控制之下。這個主要功能部件決定了產品的標識和其他運行期行為,包括確定名字和與運行期平臺相關聯的圖示,以及對所有插件默認屬性值的重新定義選項。在后面的定義您自己的全局屬性中可以看到,這個功能強大的選項使您可以定制您自己的 Eclipse 設置。

功能部件構建插件(假如您答應它們)
插件開發環境(PDE)可以自動完成為完整的運行期環境預備功能部件和插件的大部分工作。參見 Eclipse.org 中文章的討論 "PDE 生成插件"(在后面的參考資料中有相關鏈接)。這些基本的步驟在The java Developer′s Guide to Eclipse(同樣參閱后面參考資料中的鏈接)中也曾作為一個練習涉及到,遵循那個練習您可以構建并標識您已有的插件。可以說假如您有一個功能部件,并且了解 PDE 如何幫助您構建插件和功能部件,您就可以構建一個功能部件,然后讓它去同時構建所有相關的插件。構建控制策略(bin.excludes 與 bin.includes)將在后面的使用 PDE 構建功能部件的策略中討論。這些策略是對 Eclipse.org 文章以及The Java Developer′s Guide to Eclipse一書的補充。

平臺配置治理
理解功能部件所需要條件有助于理解它們如何對活動配置中可用的內容進行治理。

啟動過程
假如是一個剛解壓縮的 Eclipse 平臺,那么當您啟動 eclipse.exe 的時候將會發生:

安裝可能已經完成
假如一個工作區已經存在,那么會有一個 .metadata.configplatform.cfg 配置文件。

假如您是以常規方式安裝 Eclipse,您得運行 eclipse -initialize 命令來生成一個默認的初始化配置文件,放置在 eclipse.config 目錄下。這樣當 Eclipse 以新的工作區啟動時不再出現 Completing the install 的圖示。

找到 Java 運行期環境(JRE)。默認情況下,Eclipse 首先查找 exlipsejre 子目錄。假如沒有找到,Eclipse 將查找在系統中注冊的 Java 運行期環境。
注重:-vm dir-location 參數可以用到指定其他的 JRE。
配置被作為新的工作區的一部分創建出來。新的工作區通常沒有任何的配置,所以您會在真正的 splash 圖標之前看到一個圖標,通知您安裝設置完成。
處理那些注冊到 Eclipse 的功能部件和插件,并創建在后面將會用于檢測變化的校驗和。這些功能部件和插件或者位于當前的 eclipsefeatures 目錄和 eclipseplugins 目錄下,或者位于由鏈接文件指定的 eclipse... 目錄結構中。
一旦 Eclipse 啟動,活動配置定義將包含在 .metadata.configplatform.cfg 文件中。

鏈接文件如何擴展一個 Eclipse 安裝設置
假如您已經使用了一段時間的 Eclipse 或者在您的配置中添加了哪怕只是一個新的插件,您肯定知道 Eclipse 是到 eclipsefeatures 目錄和 eclipseplugins 目錄下去查找功能部件和插件的。不過您是否知道,Eclipse 也會到文件系統的其他位置去查找功能部件和插件?假如在 eclipselinks 目錄下存在格式正確的鏈接文件,那么這些文件會被處理,相關聯的功能部件和插件(包括沒有相關功能部件的插件)在運行期配置中都會是可用的。

一個鏈接文件只是一個命名為 id.link 的任意文件,在這里 id 通常是正在被引用的根功能部件的 id。您可以在鏈接文件目標中定義不只一個功能部件,并且名字命名為 foo.link 也是可以接受的。給出一個包含如下內容的鏈接文件:

path=E:/Eclipse-2.1.1/installedFeatures/Examples

Eclipse 將會到指定的目錄下去查找 eclipsefeatures 目錄和 eclipseplugins 目錄,看是否有合法的功能部件和(或)插件。也就是說,目標目錄必須包含一個 eclipse 目錄。假如找到,附加的功能部件和插件在運行期配置是將是可用的,假如鏈接文件是在工作區創建之后添加的,附加的功能部件和插件會作為新的配置變更來處理。

使用鏈接文件來定制您自己的 Eclipse 安裝設置的策略將在本文稍后的使用鏈接文件治理 Eclipse 安裝設置中進行討論。

配置更新?D?D添加一個功能部件
假如一個新的功能部件及所用到的插件已經添加到已有的 features 目錄和 plugins 目錄下,或者通過一個鏈接文件注冊到 Eclipse,校驗和的變化將觸發配置處理過程。這個處理在一個簡單的 splash-flash 之后進行。新的功能部件作為一個配置變更來處理,并且顯示出一個配置變更的對話框。

例如,假如您打開一個標準的 Eclipse 解壓縮環境的工作區,而后找到了 Eclipse Examples,您把它解壓縮到與 Eclipse 同樣的目錄樹中或者添加了一個鏈接文件來指明這個例子解壓縮到了何處,將會出現一個如圖1所示的對話框。
所以,假如您看到類似于這樣的一個對話框,那是因為在您運行一個安裝配置程序的時,您自己或者其他人修改了 Eclipse 的配置,而平臺發現了新的或者更新過的可用功能部件。假如條目可以被選中,您可以將這個變化添加到您當前的配置中。假如條目被禁用,說明存在配置上的問題,這個功能部件不能被添加進來。按下 Error Details 按鈕可以查看有關配置問題的信息。

配置治理注解:

存在未決變更并不意味著您不得不馬上接受它們,在相當一段時間內您完全可以不去理會它們,只需要取消對條目的選擇,并點擊 Finish即可。要在以后再添加它們,您可以選擇 Help > Software Updates > Pending Changes... 來再次打開那個對話框。
已經被接受的變更在以后還可以禁用。打開 Install/Update 透視圖,在 Install Configuration 視圖中選中功能部件,然后在 PReview 視圖中選擇 Disable 。禁用的功能部件還可以通過類似的步驟啟用。在 Install Configuration 視圖中點擊 Show Disabled Features 圖標可以顯示被禁用的功能部件。
功能部件在運行期標識組件
Eclipse 答應標識活動產品,也可以選擇標識運行期配置中的每一個功能部件。功能部件不是必須要標識出來,您可以不標識您所有的功能部件,但是您應該至少標識一個。

標識定義?D?D插件的工作
添加標識的要害問題是要明白把標識的定義在哪里。您定義標識的是功能部件,但是標識的內容是來自于插件。或者插件與功能部件的 id 相同(默認的情形),或者插件在功能部件的定義中被明確標識(這是 Eclipse 2.1.1 的新增功能)。在 Eclipse 2.1 中,一個功能部件定義可以通過在 feature.xml 文件中指定屬性 plugin=… 來定義其他插件。

插件包含了用于定義和提供標識內容的文件。

標識內容概要介紹
about.ini 控制文件定義了產品級和功能部件級的標識。產品標識必須正確包含以下兩方面內容:

功能部件必須被定義為一個可能的主要功能部件,即在 feature.xml 定義文件中要包含 primary="true"。
功能部件必須被標識為活動的主要功能部件,在產品中通常是在 eclipse 目錄下的 install.ini 文件中的條目來設置。主要功能部件也可以在運行期通過使用 -feature featureId 啟動參數來定義。
理解功能部件標識的最簡單的辦法是去查看在 about.ini 控制文件中定義了哪些元素,以及它們在一個被標識的產品或功能部件中如何起作用。
以下幾條僅用于產品標識:

windowImage
appName
aboutImage
其余條目在產品及功能部件標識過程中使用。

以百分號(%)開頭的值在 about.properties 文件中解析。當一個功能部件是主要功能部件時,用 abouText 要害字定義的文本會在 About prodUCt 對話框中顯示。當用戶點擊 Feature Details 按鈕時,隨后彈出的 About Features 對話框中也會顯示這些本文內容。

功能部件被加入到運行期配置時,會打開 welcomePage 條目指定的歡迎頁面,其后還可以通過選擇 Eclipse 菜單選項 Help > Welcome... 打開的 Welcome 選擇對話框打開這個歡迎頁面。

構建一個可行的有標識的功能部件的最快速方法是克隆一個在 Eclipse 本身中可以找到的一個現有的功能部件。具有 org.eclipse.platform id 的功能部件和插件會提供功能部件標識和插件標識。在The Java Developer′s Guide to Eclipse一書第34章練習7中有一個步驟詳盡的指導說明。

在 Eclipse.org 的更新治理器子工程的開發資源中,您可以找到另外一些關于標識的具體說明(參見參考資料中的鏈接)。

使用 PDE 構建功能部件的策略
在The Java Developer′s Guide to Eclipse一書中關于功能部件開發的章節和 Eclipse.org 的文章 "PDE 生成插件"中都對構建功能部件的過程進行了介紹,但是也還有一些其他的途徑。當您理解了如何使用 PDE 來構建功能部件和相關聯的插件之后,您可以讓這些步驟自動完成。

由 PDE 實現的 Ant 目標
讓我們從對 PDE 所提供功能概要介紹開始講起。PDE 將為一個 plugin.xml 或 feature.xml 文件生成 build.xml 文件。Build.xml是一個 Ant 腳本,可以完成運行期平臺的功能部件和插件所需要的不同任務。PDE 構建過程答應您生成下列構建目標中的一個或多個。

重要的功能部件構建目標:

build.jars 為每一個引用到的插件調用 build.xml 文件中的 build.jars 任務。
build.update.jar 為每一個引用到的插件調用 build.xml 文件中的 build.update.jars 任務。同時會為功能部件創建一個 Update JAR。這是 Ant 腳本的默認目標。
build.sources 為每一個引用到的插件調用 build.xml 文件中的 build.source 任務。
zip.distribution 創建一個包含功能部件和引用到的插件所需要的所有文件的壓縮文件。
refresh 使 Eclipse 刷新功能部件工程及任何引用到的插件的工程。
重要的插件構建目標:

build.jars 為插件定義的每一個運行期 JAR 調用 build.xml 文件中的許多目標。被調用的目標的名字與運行期 JAR 文件的名字相同。這些目標編譯 Java 代碼并創建 JAR 文件,包含任何在源文件目錄下的資源。
build.update.jar 將所有運行期插件目錄下所有需要的文件壓縮打包為一個名字為 plugin.id_version.jar 的文件,在這里 plugin.id 和 version 來自于 plugin.xml 文件。這是 Ant 腳本的默認目標。
build.sources 基于給定的運行期 JAR 文件所定義的源文件目錄,創建 Java 源文件的壓縮包。
zip.plugin 創建一個包含有插件所需要的所有內容的壓縮包。
refresh 使 Eclipse 刷新插件工程。
注重:在功能部件和插件的Ant 處理過程中,更新 JAR 或生成壓縮包的處理過程中打包的文件,是運行期環境所需要的那些文件。這些內容在功能部件或插件的 build.properties 文件和在 plugin.xml 中定義的每一個插件的運行期 JAR 文件中,通過 bin.includes 或者 bin.excludes 條目來描述。

為了構建一個插件,您可能會指定 clean,build.sources,build.jars,zip.plugin,refresh。為了構建一個功能部件,您可能會指定clean,build.sources,build.jars,zip.distribution,refresh。您或許會想要在開始時使用 clean 來強制重新生成所有結果,經常會有這種情況。盡管 Ant 處理過程將基于輸入的變化重新執行所需要的步驟,但是有一些變化不會觸發所有需要的處理過程。測試結果表明假如您改變了一個 Java 源文件,相應的源文件壓縮包將會更新,但是類不會被重新編譯,運行期 JAR 也不會被更新。所以安全起見,建議您先將輸出結果清空,以保證您在重新構建后所使用的是對應于當前源文件的運行期版本。

討論方案
為了進行討論,我們先描述一下只有一個功能部件和插件時在運行期配置中需要的內容。

組件結構示例

組件類型
文件

功能部件
feature.xml

feature_image.jpg

/license/license.Html

/license/license.pdf

/plan/project-plan.doc

插件
plugin.xml

/images/action.gif

/images/editor.gif

/src/co/pkg/id/action.java

/src/co/pkg/id/editor.java

/design-docs/plug-in.doc

/design-docs/editor.doc


正如您所看到的文件名,雖然這些文件大部分屬于運行期環境,還是有一些文件不是您想要與其他人共享的(例如,您的設計文檔)。

包含策略?D?D指出所需要的部分
至少到剛開始時,最簡單的方法是,在構建過程中將您要打包的部分作為在運行期配置中功能部件或插件的一部分而列出來。相應的 build.properties 文件分別如下所示:

build.properties 內容

組件
build.properties 文件內容

功能部件
bin.includes = feature.xml,
license/

插件
source.runtime.jar = src/
bin.includes = plugin.xml,
images/


排斥策略?D?D指定不需要的或私有的部分
另一種方法是把您不想打包的部分在構建過程中作為功能部件或插件的一部分列出來。這不僅要包括您不想共享的文件,還要包括構建過程中創建的文件和目錄(有一些是臨時的)。這種方法用到的 build.properties 文件如下:

build.properties 內容

組件
build.properties 文件內容

功能部件
bin.excludes = temp.folder/,
com.ibm.master.lab.core_1.0.0.bin.dist.zip,
.classpath,
.project,
build.xml,
build.properties

插件
bin.excludes = temp.folder/,
bin/,
.classpath,
.project,
build.xml,
build.properties,
makesrczip.xml,
src/


假如給定功能部件或插件的 id 值為 com.your.feature.id 或者 com.your.plugin.id,那么您在使用排斥策略的時候還需要在文件中包括以下條目:

com.your.feature.id_1.0.0.bin.dist.zip,
com.your.feature.id_1.0.0.jar,
com.your.plugin.id_1.0.0.jar,

zip 條目將使生成的組件壓縮包不被 update JAR 或者組件壓縮包自己所包含。JAR 條目將使生成的功能部件或插件的 update JAR 不被組件壓縮包或者 update JAR 自己所包含。

當您的組件壓縮包或者 update JAR 看起來比它應該的大小要大,或者在每次您進行編譯時包的大小呈跳躍式增長,說明您應該執行以上步驟了。您需要在適當的功能部件或者插件的 build.properties 文件中加入以上條目來解決這個問題。

對文件或者結構變化的響應
除了以上提到的之外,當一個新的文件或目錄添加到功能部件或者插件時,還有必需的響應需要考慮。我們的意思是您得讓您的功能部件和插件能應付可能的改變,也就是說它們分別需要一個 feature.properties 文件和一個 plugin.properties 文件。當您用包含策略時,您需要給 .properties 文件添加一個適當的屬性,假如是使用排斥策略的話就不用這樣做了。

不論哪種方法,假如您把一個文件添加到一個目錄,那么不需要做任何其他的改動。對于新添加的文件,假如使用的是包含策略,它會被發送處理,假如使用的是排斥策略,它將不會被發送處理。這實際上是您可能應該要考慮使用不同的目錄來存放不同的文件的原因。例如,您的插件所用到的所有圖片所在的目錄應該被包含在內,而一個開發過程中存放插件的設計討論或文檔的目錄則不然。

最壞的情形是當您忘記對 build.properties 進行更新時:會發生運行期失敗或生成內容存在差錯的產品。假如您使用包含策略,新加入的文件或目錄在打包后是不可用的,這有可能會導致您的插件不能用或者顯示出 Eclipse 默認的圖標(紅盒子)。假如是使用排斥策略添加新文件或目錄,這些文件或目錄的內容在打包過程中會被包含進來。根據您的風格選擇適當的方法,從而把您忘記執行更新時的風險降到最低。這將取決于您所面臨的主要問題:是功能部件或插件不能運行,還是其他人本不應該看到運行期目錄下的文件。

組織功能部件
當您在開發您的工具時,您是否考慮到了需要多少個插件?答案是至少三個:一個是您的模型,也就是非 UI 的核心部分,一個是您的 UI 內容,還有一個或多個是用于提供幫助內容。假如您注重過,您會發現這是 Eclipse 本身的基本模式(jdt.core, jdt.ui, jdt.doc; debug.core, debug.ui;等等)。

這樣劃分的原因之一是,相對于不用于 UI 的插件來說,用于 UI 的插件在運行期需要不同的 Eclipse 組件的支持(org.eclipse.ui)。

包含其他功能部件
功能部件假如沒有被其他功能部件包含,那么在 Eclipse 配置中都會被配置為根功能部件。默認情況下,根功能部件可以由用戶在 Install/Update 透視圖中禁用或啟用,并且可以在 feature.xml 文件中確定一個更新 URL。當包含一個功能部件時,只有在根功能部件中的更新 URL 會被處理,否則只能通過 search-location 定義非凡許可才可以。

通過包含功能部件,您可以治理包的組織結構。您可能會有多個功能部件,但只有一個做過標識,其余的或者是用來構成結構,或者是用來治理組件。請記住是根功能部件來定義更新的站點,盡管這個角色可以由功能部件委派給它所包含的功能部件,通過設置 search-location 屬性值為 selfboth。

假如您正在構建一個基于 Eclipse 的產品,您可能希望您的一個功能部件來包含 Eclipse 功能部件樹。對于標識這個產品來說這并不需要,但是您可以指定另外的更新站點(Eclipse 自己用的是 http://update.eclipse.org/updates),或者根本不指定更新站點,禁用基于 Web 的更新。

可選功能部件的角色
當將一個功能部件包含到另一個功能部件時,您可以選擇是否把它設置為可選的。主要原因是創建這樣的結構可以讓用戶根據他自己的需要來禁用您提供的組件的一部分。

當新的功能部件包含有可選功能部件,但那些可選功能部件并不存在時,Eclipse 的配置邏輯不答應添加這個新的功能部件。也就是說,假如適當的先決條件成立,可以使用可選功能部件來創建層結構。不過需要將這些層存貯在不同的目錄樹下,并且每層使用單獨的鏈接文件。您可以添加到 Eclipse 配置以增加其功能的鏈接文件的沒有數目上的限制。

讓 Eclipse (或者任何基于 Eclipse 的產品)以您的方式工作
現在向您講明了兩點:指定的主要功能部件控制整個產品的標識和默認屬性,Eclipse 可以在安裝配置目錄下或者任何一個鏈接的 Eclipse 目錄結構下找到組件。這意味著您可以改變 Eclipse (存在相關風險,不過僅僅意味著您修改時需要小心!)。這些改變可以幫助您治理基于 Eclipse 的安裝配置,并使之支持您個人所喜好的屬性規則。

使用鏈接文件來治理 Eclipse 安裝配置
您可能會希望能對環境進行更多的治理,而不是毫無選擇地將所有的插件(我希望是引用到的功能部件)全部安裝到您的 Eclipse 目錄樹下。假如您需要更新 Eclipse,實際上您并不想要另外再裝一個新的 Eclipse 或者在列表中去查找您所想要的功能部件和插件。

下面是一種借助鏈接文件來組織您的 Eclipse 或者基于 Eclipse 的產品和構件的方法:

保持 Eclipse 或者基于 Eclipse 的產品是干凈的。也就是說,不要把您的任何功能部件或者插件添加到 eclipsefeatures 和 eclipseplugins 目錄下。
在已有的 eclipse 目錄下創建一個 eclipselinks 目錄和一個 eclipselinks-out 目錄。假如您用的是基于 Eclipse 的產品,那么可能已經存在 eclipselinks-out 目錄。這個目錄并不非凡,只是一個用來方便存放不用的鏈接文件的地方。
為您要添加到您的配置中的功能部件和插件創建一個或多個 add-ons 的目錄。在這些目錄下,創建一個 eclipsefeatures 和一個 eclipseplugins 目錄結構。
為每一個 add-ons 目錄在 eclipselinks-out 目錄下創建一個鏈接文件。將那些您當前要添加到您的活動配置中去的鏈接文件拷貝到 eclipselinks 目錄。
例如,假定您將 Eclipse 解壓縮到一個名為 Eclipse-2.1.1 的目錄下,然后創建一個名為 CoolTools 的 add-ons 目錄,也放在 Eclipse-2.1.1 目錄下。在 CoolTools 目錄下,您可以有多個目錄,每個目錄用于一個或一族您要添加到 Eclipse 的工具。您的目錄結構可能會如圖3所示
EditorList.link 文件要包含下面其中一條(不能是全部)

path=D:/Eclipse-2.1.1/CoolTools/EditorList
path=D:/Eclipse-2.1.1/CoolTools/EditorList

斜杠是一條(/)還是兩條(/)取決于目錄結構。

確認條目不要以空格結尾,因為這樣 Eclipse 會忽略它?D?D我第一次用鏈接文件時用了好幾個小時才弄明白這一點。

假如您使用一個新的工作區來啟動 Eclipse,所有 Eclipse 自帶的以及通過鏈接文件找到的功能部件和插件都是可用的。假如您要添加一個鏈接文件,并使用現有的工作區重新啟動 Eclipse,Configuration Changes 對話框就會彈出。假如您刪除了一個鏈接文件(很簡單,只是把它移到 links-out 目錄下),配置的變化也會被 Eclipse 注重到,但您能看到的僅僅是 splash-flash。

實際上您不是必須將鏈接文件移入移出來控制配置,更好的辦法是用 Install/Update 透視圖來調整配置。當然,可以這樣做的前提是您的插件都屬于功能部件(看,這是另外一個需要功能部件的理由)。使用 Eclipse 進行配置的調整將以后面討論。

使用 Install/Update 透視圖來修改配置
根功能部件,以及任何定義為可選擇的功能部件,都可以在當前配置中禁用。被禁用后,功能部件仍然可以被平臺認出;它們只是不再包含在當前的運行期配置中。

前面我們談及了將 Eclipse Examples 添加到活動配置中。添加后,我們可以使用 Install/Update 透視圖來禁用它。假如您正打開一個包含有 Eclipse Examples 的 Eclipse 配置的 Install/Update 透視圖,您看到的將如圖4 所示
在 Preview 視圖中點擊 Disable Now 按鈕,您就可以將 Eclipse Examples 功能部件從運行期配置中臨時移除。點擊后,Eclipse 將提示您重新啟動平臺來使配置的修改生效。

Eclipse Examples 功能部件在當前配置中將不再可見(或者說不是活動的)。為了能再次看到這個功能部件并啟用之,您需要在 Install Configuration 視圖中點擊 Show Disabled Features 開關按鈕(見圖5)。

由于 Eclipse Examples 功能部件是一個根功能部件,所以可以這樣做。假如您在 Eclipse SDK 中瀏覽其他功能部件,您將發現它們在 Preview 視圖中沒有相應的 Disable Now 按鈕,這是因為它們被定義為必需的。

假如您用的是 Eclipse SDK,您應該會有默認配置的平臺、JDT 和 PDE。假如您正在做一些插件的開發,但是您不需要 PDE??或者在一些情況下,您不是總需要 JDT??您只要對 Eclipse 做一個小的修改就可以禁用這些功能部件。打開 org.eclipse.platform.sdk.win32 功能部件的 feature.xml 文件,將以下幾行修改為包含 optional="true" 屬性。

清單 1. 禁用 PDE 和 JDT



<includes id="org.eclipse.platform.win32" version="2.1.1" match="equivalent"/>

<includes id="org.eclipse.jdt" version="2.1.1" match="equivalent" optional="true"/>

<includes id="org.eclipse.pde" version="2.1.0" match="equivalent" optional="true"/>

<includes id="org.eclipse.platform.win32.source" version="2.1.1" match="equivalent"

optional="true"/>

<includes id="org.eclipse.jdt.source" version="2.1.1" match="equivalent" optional="true"/>


現在您可以在 Install Configuration 視圖中選擇這些功能部件并禁用它們。假如所有前面提到那些定義為可選擇的功能部件都被禁用,平臺依然可以運行。并且,您隨時可以重新啟用它們。圖6 是 Install Configuration 視圖中顯示的被禁用的功能部件。

圖 6. 禁用 Eclipse 多個的功能部件

這些禁用/啟用的設置都是僅對于當前工作區有效。您可以有另外的活動工作區,其中包含有部分或全部在當前工作區中被禁用的功能部件。

這個簡單的例子說明了使用功能部件的優勢(它們可以被禁用)和使用鏈接文件來將所有可能的功能部件添加到您的配置的意義所在。在一個給定的工作區中將您所不需要的功能部件禁用,這樣就可以優化當前配置。

定義自己的全局屬性
Eclipse 是一個優秀的工具,但是同任何工具一樣,您得對它進行定制,它才能是完美的。工具提供了屬性頁面來讓您改變工具的行為或可視化顯示。最新統計,在 Eclipse 中有 62 個屬性頁面。幾乎每次您使用到一個新工具,您都會發現有些選項您想要修改。但是當您使用多個工作空間時,或者是在一個團隊的環境中工作,有一些選項需要與他人協調,這樣就出現了如何在跨工作空間以及與他人協調工作時對選項進行最佳治理的問題。

Eclipse 提供了導入/導出屬性的功能。在任何一個屬性對話框中,您都可以將屬性導出到一個 .epf 文件中。當使用其他工作區或與他人共享時,可以再次導入這個文件。您甚至可以將它添加到工程中與團隊成員共享,以便每個人都可以得到標準的屬性。

但是這樣做會變得單調而乏味,并且假如您忘記了就麻煩了。在使用 Eclipse 或任何基于 Eclipse 的產品時,您應該意識到還有另外一種方法可以定義全局屬性。您可以通過修改主要功能部件的 plugin_customization.ini 文件來定制屬性的默認值。

您可以在 eclipse 目錄下的 install.ini 文件中找到主要功能部件。例如,在標準的 Eclipse 解壓縮中的 install.ini 的內容如下:

清單 2. 標準的 Eclipse 解壓縮中的 install.ini 的內容



# install.ini

# java.io.Properties file (ISO 8859-1 with "" escapes)

# This file does not need to be translated.



# Required property "feature.default.id" contains the id of the primary feature

# (the primary feature controls product branding, splash screens, and plug-in customization)

feature.default.id=org.eclipse.platform



# Required property "feature.default.application" contains id of the core

# application that gets control on startup. For products with a UI, this

# is always org.eclipse.ui.workbench; for "headless" products, this is product-specific.

feature.default.application=org.eclipse.ui.workbench


feature.default.id=… 指定了默認的主要功能部件。要注重的是,通過在啟動 Eclipse 時使用 -feature 選項,可以把其他功能部件聲明為是主要的。

同大部分功能部件控制和標識一樣,實際的工作都是在功能部件相關聯的插件中完成的。對于 Eclipse來說,這是一個 id 與功能部件相同的插件,org.eclipse.platform 插件。假如您仔細查看這個作為主要功能部件標識的插件,您將發現一個名為 plugin_customization.ini 的文件。這個文件的內容與導出屬性的文件類似。當 Eclipse 啟動時會讀取這個文件,并用來指定所有默認的屬性值,而不是去使用插件本身定義的那些值。這就使得產品,或者說是您,可以改變插件的行為。默認的 plugin_customization.ini 文件的內容只有一條:

清單 3. 默認的 plugin_customization.ini 文件 



# plugin_customization.ini

# sets default values for plug-in-specific preferences

# keys are qualified by plug-in id

# e.g., com.example.acmeplugin/myproperty=myvalue

# java.io.Properties file (ISO 8859-1 with "" escapes)

# "%key" are externalized strings defined in plugin_customization.properties

# This file does not need to be translated.



# Property "org.eclipse.ui/defaultPerspectiveId" controls the

# perspective that the workbench opens initially

org.eclipse.ui/defaultPerspectiveId=org.eclipse.ui.resourcePerspective


這一條目指定了打開新的工作區時以及當您關掉所有的透視圖后關閉 Eclipse 時打開的透視圖。假如您使用的基于 Eclipse 的產品,這個條目可能有所不同。

指定要包含的屬性的過程比較費事,但至少您應該做如下步驟:

1. 啟動一個干凈的工作區。

2. 修改您想要改變的一個屬性。

3. 將屬性導出到一個 .epf 文件。

4. 在導出的文件中找到新的健值,并確定它是否反映了您剛剛所做的改變。

5. 將一個或多個鍵的條目拷貝到標識插件(使用 Eclipse 時這個插件是 org.eclipse.platform)的 plugin_customization.ini 文件中。

6. 測試結果,或者保留新的鍵,或者再試一次。

注重:假如您不習慣于去更新產品的 plugin_customization.ini 文件,您可以在其他位置創建一個這個文件的拷貝,在啟動 Eclipse 或基于 Eclipse 的產品時使用參數來指定它。



eclipse -plugincustomization myCustomDefaults.ini


全局屬性示例
前面提到了一些相關技術的描述,并提出了對您可能希望包含到您定制的 plugin_customization.ini 文件中的一些值的建議,這里給出了示例屬性重寫,作為對前面兩方面的內容的說明。

我們將把它們根據我定制的目的在邏輯上分為的幾部分來介紹。您可以下載完全的插件 customization.ini 文件。

視圖欄默認是在底部,但我喜歡把它們放在頂部:


# View tabs at the bottom

org.eclipse.ui.workbench/VIEW_TAB_POSITION=128




新工作區打開時不打開歡迎頁面,并且在關閉工作臺時不再提示:


# No welcome dialog at open and no confirm on close

org.eclipse.ui.workbench/WELCOME_DIALOG=false

org.eclipse.ui.workbench/EXIT_PROMPT_ON_CLOSE_LAST_WINDOW=false




在打開新工程向導所知的透視圖時,禁用提示或其他動作:


# Never change to perspective required by new project wizard (no prompt)

org.eclipse.ui.workbench/SWITCH_PERSPECTIVE_ON_PROJECT_CREATION=never




定義另外的默認文本字體


# Default text font (leaks into Java editor)

# Note: you have to touch the font page and say OK/Apply (probable bug)

org.eclipse.ui.workbench/org.eclipse.jface.textfont=

1Lucida Console91WINDOWS1-15000700000032149Lucida Console;



注重:字體屬性條目比較非凡,對它的修改不會立即生效。假如您訪問字體屬性頁,前面所定義的內容會顯示出來,不過得在您選擇了 OK 或者 Apply 之后才會生效。我不能讓這個鍵保存下來用于 Java 文本字體。

預定義附加的 Java 編輯器任務標簽:


# Add to the default JDT task tags (TODO should probably be left)

org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.taskTags=TODO,Edu-Sol




將對 Package EXPlorer 的雙擊默認設置為 Go Into 動作:


# Package Explorer GoInto on Double click

org.eclipse.jdt.ui/packageview.doubleclick=packageview.gointo




有一些沒有定義屬性頁面的選項也是可以定制的。在完成對 UI 的標準設置后導出的 .epf 文件中,我發現有一些 JDT 的選項值是作為屬性來保存的。

這個屬性鍵是用于告知 JDT UI 它要讀取屬性并用來改變默認的 UI 行為:


# Tells JDT it does have some prefs to use (forces a read of these values)

org.eclipse.jdt.ui/CustomFiltersActionGroup.org.eclipse.jdt.ui.PackageExplorer.

TAG_DUMMY_TO_TEST_EXISTENCE=storedViewPreferences



注重:假如沒有上面的這個屬性鍵,接下來的兩組設置將被忽略。

活動 Package Explorer 過濾器以屬性值的形式保存:


# Package Explorer filter - standard JDT defaults + library filter

org.eclipse.jdt.ui/org.eclipse.jdt.ui.PackageExplorer.LibraryFilter=true

org.eclipse.jdt.ui/org.eclipse.jdt.ui.PackageExplorer_patternFilterId_.*=true

org.eclipse.jdt.ui/org.eclipse.jdt.ui.PackageExplorer.PackageDeclarationFilter=true

org.eclipse.jdt.ui/org.eclipse.jdt.ui.PackageExplorer_patternFilterId_*$*.class=true

org.eclipse.jdt.ui/org.eclipse.jdt.internal.ui.PackageExplorer.EmptyInnerPackageFilter=true




Outline 視圖有一個顯示選項,可以在活動的 JDT Java 編輯器中顯示內容時減小樹的深度。這個圖標有一個懸浮幫助 Go Into Top Level Type,由下面這個屬性項來控制:


# Outline view GoInto Toggle when using JDT editor

org.eclipse.jdt.ui/GoIntoTopLevelTypeAction.isChecked=true




您可能會想要嘗試為更多的屬性指定新的默認值,使用前面描述的方法然后核對一下結果即可。您或許會希望在一個臨時的工作區中做這些事情,達到修改的目的后,您可以按此去修改活動的主要功能部件的 plugin_customization.ini 文件(不要告訴任何人是我教您這樣做的!)。并且要注重的是,您可能會發現其他一些鍵被忽略了,這種情況我也曾碰到過,因為字體是用于 JDT 的,因此這一條目加入到 plugin_customization.ini 文件后,在屬性頁中根本就不會體現出這種變化。

結束語
功能部件是 Eclipse 的幕后英雄--它們很重要,因為它們是 Eclipse 配置治理的組成部分,支持產品標識,并且它們是在 Eclipse 平臺上構建定制解決方案的產品的一部分。使用功能部件您可以:

當您使用基于 Eclipse 的產品進行工作時,您可以根據功能部件標識鑒別出是誰提供了哪些不同的可用功能
對產品的標識可以幫助進一步定制 Eclipse
在插件開發環境中自動完成任務
通過禁用/啟用根功能部件,或者使用 Install/Update 透視圖來禁用/啟用定義為可選的被包含的功能部件,您可以動態地改變給定工作區的配置
所以,使用功能部件吧,它可以幫助您自動完成構建插件的一些步驟,使用文中提到的自定義 install/link 文件組織方法,可以使您的 Eclipse 環境更加好用。

參考資料

Eclipse.org 的文章"PDE Does Plug-ins"也對如何使用 PDE 來構建插件進行了描述。
下載本文中提到的插件_customization.ini 文件。
要獲得關于開發 Eclipse 插件的更詳盡的指南,請參考The Java Developer′s Guide to Eclipse,該書的作者是 Sherry Shavor, Jim D′Anjou, Dan Kehn, Scott Fairbrother, John Kellerman, 和 Pat McCarthy (Addison Wesley Professional, 2003)。非凡的,第22章是關于功能部件的開發的內容,第34章練習7是關于功能部件的開發和部署的內容。
Eclipse.org 上為 Update Manager 子項目預備的開發資料中有另外的關于標識的細節。
"開發 Eclipse 插件" (developerWorks, 2002 年 12 月) 介紹了一個簡單的 "Hello, World" 插件的創建。
"擴展 Eclipse 的 Java 開發工具" (developerWorks, 2003 年 7 月) 介紹了使用 PDE 創建 Eclipse 插件的方法。
在 developerWorks 的開放源代碼項目專區可以找到更多面向 Eclipse 用戶的文章。并請關注 alphaWorks 上最新的 Eclipse 技術下載。
關于作者
Pat McCarthy 是 IBM 公司的資深軟件工程師,他是一個在多種平臺上使用和治理開發技術的專家。Pat 在 IBM 期間的工作經歷包括,在 Poughkeepsie, New York 負責商務應用系統的開發,以及在 San Jose, California 從事 IBM Redbooks 和教學材料開發的項目治理工作。近幾年他成為在 Raleigh, North Carolina 的 Eclipse Jumpstart 團隊成員,致力于在 IBM 應用開發產品中對使用 Eclipse 技術的支持。您可以通過patmc at us.ibm.com與他聯系。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湛江市| 徐州市| 宁武县| 锡林郭勒盟| 长子县| 汾西县| 运城市| 拉萨市| 康定县| 绥滨县| 武威市| 隆回县| 百色市| 九寨沟县| 永嘉县| 苍溪县| 从江县| 靖西县| 博白县| 齐齐哈尔市| 西宁市| 固镇县| 东阳市| 黔西县| 蒙阴县| 榆社县| 仁布县| 微山县| 会东县| 朝阳市| 玉田县| 勐海县| 古交市| 邻水| 临澧县| 临沂市| 阜南县| 元朗区| 金乡县| 乌拉特前旗| 堆龙德庆县|