在Eclipse插件開發中,特別是自動生成代碼或UML轉代碼的場景,常需刷新資源或觸發重新編譯。本文介紹兩種核心操作的實現方式。
關鍵接口為org.eclipse.core.resources.IResource,調用其refreshLocal(int depth, IProgressMonitor monitor)方法即可。例如:
resource.refreshLocal(IResource.DEPTH_INFINITE, null);
IResource(基礎接口)IContainer extends IResourceIFile extends IResourceIFolder extends IContainerIProject extends IContainerIWorkspaceRoot extends IContainer凡實現上述任一接口的對象均可調用刷新方法。
Resource implements IResourceContainer extends Resource implements IContainerFile extends Resource implements IFileFolder extends Container implements IFolderProject extends Container implements IProjectWorkspaceRoot extends Container implements IWorkspaceRootResourcesPlugin.getWorkspace().build(IncrementalProjectBuilder.CLEAN_BUILD, monitor);
((IProject) selection[i]).build(IncrementalProjectBuilder.CLEAN_BUILD,
new SubProgressMonitor(monitor, 1));
通過IncrementalProjectBuilder.CLEAN_BUILD參數指定清理模式,配合進度監視器實現增量構建控制。