開發自動生成代碼/UML 轉代碼插件時,常需觸發資源刷新與專案重編譯。核心 API 解析:
關鍵介面:org.eclipse.core.resources.IResource
// 遞歸刷新資料夾及所有子資源
resource.refreshLocal(IResource.DEPTH_INFINITE, null);
實作介面繼承體系:
對應具體類:Resource → Container → Folder/Project/WorkspaceRoot、File。凡實作上述介面者皆可呼叫 refreshLocal。
// 全工作區 Clean Build
ResourcesPlugin.getWorkspace().build(
IncrementalProjectBuilder.CLEAN_BUILD, monitor);
// 單一專案 Clean Build
((IProject) selection[i]).build(
IncrementalProjectBuilder.CLEAN_BUILD,
new SubProgressMonitor(monitor, 1));
IncrementalProjectBuilder 另支援 FULL_BUILD (完整建構)、INCREMENTAL_BUILD (增量建構)、AUTO_BUILD (自動建構)。進度監視器 SubProgressMonitor 可分配進度權重。
refreshLocal 再 build 確保編譯器看到新檔案WorkspaceModifyOperation 包裝,支援 Undo/Progress UIJob 或 WorkspaceJob 異步執行