Source:
private void doFullBuild() { Job buildJob = new Job(PDEUIMessages.CompilersConfigurationBlock_building) { @Override public boolean belongsTo(Object family) { return ResourcesPlugin.FAMILY_MANUAL_BUILD == family; } @Override protected IStatus run(IProgressMonitor monitor) { try { IProject[] projects = null; if (fProject == null) { projects = PDEPlugin.getWorkspace().getRoot().getProjects(); } else { projects = new IProject[] {fProject}; } SubMonitor subMonitor = SubMonitor.convert(monitor, "", projects.length * 2); for (int i = 0; i < projects.length; i++) { IProject projectToBuild = projects[i]; if (!projectToBuild.isOpen()) continue; if (projectToBuild.hasNature(PDE.PLUGIN_NATURE)) { if (fBuilders.contains(PDE.MANIFEST_BUILDER_ID)) projectToBuild.build(IncrementalProjectBuilder.FULL_BUILD, PDE.MANIFEST_BUILDER_ID, null, subMonitor.newChild(1)); else subMonitor.worked(1); if (fBuilders.contains(PDE.SCHEMA_BUILDER_ID)) projectToBuild.build(IncrementalProjectBuilder.FULL_BUILD, PDE.SCHEMA_BUILDER_ID, null, subMonitor.newChild(1)); else subMonitor.worked(1); } else if (projectToBuild.hasNature(PDE.FEATURE_NATURE)) { if (fBuilders.contains(PDE.FEATURE_BUILDER_ID)) projectToBuild.build(IncrementalProjectBuilder.FULL_BUILD, PDE.FEATURE_BUILDER_ID, null, subMonitor.newChild(2)); } else { subMonitor.worked(2); } } } catch (CoreException e) { return e.getStatus(); } catch (OperationCanceledException e) { return Status.CANCEL_STATUS; } return Status.OK_STATUS; } }; buildJob.setRule(ResourcesPlugin.getWorkspace().getRuleFactory().buildRule()); buildJob.setUser(true); buildJob.schedule(); }

Target:
private void doFullBuild() { Job buildJob = new Job(PDEUIMessages.CompilersConfigurationBlock_building) { @Override public boolean belongsTo(Object family) { return ResourcesPlugin.FAMILY_MANUAL_BUILD == family; } @Override protected IStatus run(IProgressMonitor monitor) { try { IProject[] projects = null; if (fProject == null) { projects = PDEPlugin.getWorkspace().getRoot().getProjects(); } else { projects = new IProject[] {fProject}; } SubMonitor subMonitor = SubMonitor.convert(monitor, projects.length * 2); for (int i = 0; i < projects.length; i++) { SubMonitor iterationMonitor = subMonitor.newChild(2).setWorkRemaining(2); IProject projectToBuild = projects[i]; if (!projectToBuild.isOpen()) continue; if (projectToBuild.hasNature(PDE.PLUGIN_NATURE)) { if (fBuilders.contains(PDE.MANIFEST_BUILDER_ID)) { projectToBuild.build(IncrementalProjectBuilder.FULL_BUILD, PDE.MANIFEST_BUILDER_ID, null, iterationMonitor.newChild(1)); } if (fBuilders.contains(PDE.SCHEMA_BUILDER_ID)) { projectToBuild.build(IncrementalProjectBuilder.FULL_BUILD, PDE.SCHEMA_BUILDER_ID, null, iterationMonitor.newChild(1)); } } else if (projectToBuild.hasNature(PDE.FEATURE_NATURE)) { if (fBuilders.contains(PDE.FEATURE_BUILDER_ID)) { projectToBuild.build(IncrementalProjectBuilder.FULL_BUILD, PDE.FEATURE_BUILDER_ID, null, iterationMonitor.newChild(2)); } } } } catch (CoreException e) { return e.getStatus(); } catch (OperationCanceledException e) { return Status.CANCEL_STATUS; } return Status.OK_STATUS; } }; buildJob.setRule(ResourcesPlugin.getWorkspace().getRuleFactory().buildRule()); buildJob.setUser(true); buildJob.schedule(); }