單純將外掛放入 plugins 目錄屬於「非受管理外掛」,Eclipse 啟動時僅以啟動畫面閃爍兩次提示配置變更,使用者無法識別、啟用/停用、更新該元件。Feature 封裝一組相關外掛,提供:
feature.xml)啟動時只有一個主要 Feature(feature.xml 設 primary="true")掌控產品名稱、圖示、視窗圖片、預設屬性值。可透過 install.ini 指定或啟動參數 -feature featureId 切換。
Feature 定義品牌化,但實際資源(about.ini、about.properties、welcomePage)位於關聯外掛(通常與 Feature 同 ID)。about.ini 控制產品級(windowImage、appName、aboutImage)與 Feature 級品牌化文字。
PDE 為 feature.xml/plugin.xml 產生 build.xml,主要目標:
build.jars、build.update.jar(預設)、build.sources、zip.distribution、refresh外掛目標類似:build.jars、build.update.jar、build.sources、zip.plugin、refresh。
| 策略 | 適用場景 | 範例 build.properties |
|---|---|---|
包含策略(bin.includes) |
專案穩定、檔案較少 | bin.includes = feature.xml,\nlicense/ |
排除策略(bin.excludes) |
專案頻繁新增檔案、含大量私有/暫存檔 | bin.excludes = temp.folder/,\n.classpath,\n.project,\nbuild.xml,\nbuild.properties,\ncom.your.feature.id_1.0.0.bin.dist.zip,\ncom.your.feature.id_1.0.0.jar |
排除策略需額外排除產生的 ZIP/JAR 檔,避免巢狀封裝導致檔案膨脹。
bin.includes建議依風險偏好選擇:寧可少打包(功能缺失)或多打包(洩露內部檔)。
參考 Eclipse 自身模式(如 jdt.core/jdt.ui/jdt.doc),將模型(非 UI)、UI、說明文件拆分為獨立外掛,再由 Feature 整合。UI 外掛需相依 org.eclipse.ui,核心則不需。
<includes> 其他 Feature,形成樹狀結構search-location="selfboth" 委派更新optional="true" 允許使用者在 Install/Update 視圖啟用/停用eclipse/links 目錄下的 id.link 檔案指向外部 eclipse/features、eclipse/plugins 目錄。範例結構:
Eclipse-2.1.1/
eclipse/
links/ # 啟用的 link
links-out/ # 停用的 link
CoolTools/
EditorList/ # 含 eclipse/features, eclipse/plugins
EditorList.link 內容:path=D:/Eclipse-2.1.1/CoolTools/EditorList
移動 link 檔案即可動態增減功能,配合 Install/Update 視圖啟用/停用根 Feature 或可選 Feature,實現工作空間級的配置優化。
plugin_customization.ini主要 Feature 關聯外掛的 plugin_customization.ini 可覆寫所有外掛的預設偏好值。步驟:
.epf 檔,擷取鍵值對plugin_customization.ini-plugincustomization myCustomDefaults.ini 指定外部檔案常用自訂範例:
# 標籤頁置頂
org.eclipse.ui.workbench/VIEW_TAB_POSITION=128
# 關閉歡迎頁與關閉確認
org.eclipse.ui.workbench/WELCOME_DIALOG=false
org.eclipse.ui.workbench/EXIT_PROMPT_ON_CLOSE_LAST_WINDOW=false
# 新專案不自動切換透視圖
org.eclipse.ui.workbench/SWITCH_PERSPECTIVE_ON_PROJECT_CREATION=never
# 預設字體
org.eclipse.ui.workbench/org.eclipse.jface.textfont=1|Lucida Console|9|...
# JDT 任務標籤
org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.taskTags=TODO,Edu-Sol
# Package Explorer 雙擊進入
org.eclipse.jdt.ui/packageview.doubleclick=packageview.gointo
Feature 是 Eclipse 配置管理的核心,實現模組化部署、品牌化、自動化建置、動態配置與全域偏好設定。善用 Feature、Link 檔案與 plugin_customization.ini,可打造乾淨、可維護、符合團隊慣例的 Eclipse 開發環境或商業產品。