From 4e7db136c01b6b78041e3d72e654407475e586d7 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Sat, 10 Dec 2011 16:51:58 +0100 Subject: [PATCH] optimize deletion of output on rebuild --- .../jps/incremental/IncProjectBuilder.java | 35 +++++++------------ 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java index 8ca6753e584c..f497940c9489 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java @@ -95,7 +95,9 @@ public class IncProjectBuilder { } private void runBuild(CompileContext context) throws ProjectBuildException { - cleanOutputRoots(context); + if (!context.isMake()) { + cleanOutputRoots(context); + } context.processMessage(new ProgressMessage("Running 'before' tasks")); runTasks(context, myBuilderRegistry.getBeforeTasks()); @@ -127,29 +129,18 @@ public class IncProjectBuilder { private static void cleanOutputRoots(CompileContext context) throws ProjectBuildException { final CompileScope scope = context.getScope(); final Collection allProjectModules = scope.getProject().getModules().values(); - final Collection modulesToClean = new HashSet(); + final Collection modulesToClean = new HashSet(scope.getAffectedModules()); - if (context.isMake()) { - for (Module module : scope.getAffectedModules()) { - if (context.isDirty(module)) { - modulesToClean.add(module); - } + final Set allModules = new HashSet(allProjectModules); + allModules.removeAll(modulesToClean); + if (allModules.isEmpty()) { + // whole project is affected + context.getBuildDataManager().clean(); + try { + context.getMappings().clean(); } - } - else { - modulesToClean.addAll(scope.getAffectedModules()); - - final Set allModules = new HashSet(allProjectModules); - allModules.removeAll(scope.getAffectedModules()); - if (allModules.isEmpty()) { - // whole project is affected - context.getBuildDataManager().clean(); - try { - context.getMappings().clean(); - } - catch (IOException e) { - throw new ProjectBuildException(e); - } + catch (IOException e) { + throw new ProjectBuildException(e); } }