From d60e9b32793e4f9937114c7fffa31c80c350e904 Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 12 Aug 2010 13:06:42 +0400 Subject: [PATCH] IDEA-26864: Generate Ant Build File with GWT and Artifacts don't copy files --- .../intellij/compiler/ant/CleanProject.java | 25 ++++++++++--------- .../intellij/compiler/ant/ProjectBuild.java | 5 +++- .../compiler/ant/ChunkBuildExtension.java | 8 ++++++ 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/ant/CleanProject.java b/java/compiler/impl/src/com/intellij/compiler/ant/CleanProject.java index 730a2fe497a0..5613da9a6482 100644 --- a/java/compiler/impl/src/com/intellij/compiler/ant/CleanProject.java +++ b/java/compiler/impl/src/com/intellij/compiler/ant/CleanProject.java @@ -15,13 +15,17 @@ */ package com.intellij.compiler.ant; -import com.intellij.compiler.ant.taskdefs.Target; import com.intellij.compiler.ant.artifacts.ArtifactsGenerator; +import com.intellij.compiler.ant.taskdefs.Target; import com.intellij.openapi.compiler.CompilerBundle; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.text.StringUtil; import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.List; /** * @author Eugene Zhuravlev @@ -30,20 +34,17 @@ import java.io.PrintWriter; public class CleanProject extends Generator { private final Target myTarget; - public CleanProject(@NotNull GenerationOptions genOptions, @NotNull ArtifactsGenerator artifactsGenerator) { - StringBuffer dependencies = new StringBuffer(); + public CleanProject(Project project, @NotNull GenerationOptions genOptions, @NotNull ArtifactsGenerator artifactsGenerator) { + List dependencies = new ArrayList(); final ModuleChunk[] chunks = genOptions.getModuleChunks(); - for (int idx = 0; idx < chunks.length; idx++) { - if (idx > 0) { - dependencies.append(", "); - } - dependencies.append(BuildProperties.getModuleCleanTargetName(chunks[idx].getName())); + for (ModuleChunk chunk : chunks) { + dependencies.add(BuildProperties.getModuleCleanTargetName(chunk.getName())); } - for (String target : artifactsGenerator.getCleanTargetNames()) { - if (dependencies.length() > 0) dependencies.append(", "); - dependencies.append(target); + dependencies.addAll(artifactsGenerator.getCleanTargetNames()); + for (ChunkBuildExtension extension : ChunkBuildExtension.EP_NAME.getExtensions()) { + dependencies.addAll(extension.getCleanTargetNames(project, genOptions)); } - myTarget = new Target(BuildProperties.TARGET_CLEAN, dependencies.toString(), + myTarget = new Target(BuildProperties.TARGET_CLEAN, StringUtil.join(dependencies, ", "), CompilerBundle.message("generated.ant.build.clean.all.task.comment"), null); } diff --git a/java/compiler/impl/src/com/intellij/compiler/ant/ProjectBuild.java b/java/compiler/impl/src/com/intellij/compiler/ant/ProjectBuild.java index c1e7ee712ae7..7d4c3d9d2216 100644 --- a/java/compiler/impl/src/com/intellij/compiler/ant/ProjectBuild.java +++ b/java/compiler/impl/src/com/intellij/compiler/ant/ProjectBuild.java @@ -61,6 +61,9 @@ public abstract class ProjectBuild extends Generator { } } } + for (ChunkBuildExtension extension : ChunkBuildExtension.EP_NAME.getExtensions()) { + extension.generateProjectTargets(project, genOptions, myAntProject); + } final Target initTarget = new Target(BuildProperties.TARGET_INIT, null, CompilerBundle.message("generated.ant.build.initialization.section.title"), null); @@ -69,7 +72,7 @@ public abstract class ProjectBuild extends Generator { ArtifactsGenerator artifactsGenerator = new ArtifactsGenerator(project, genOptions); - myAntProject.add(new CleanProject(genOptions, artifactsGenerator), 1); + myAntProject.add(new CleanProject(project, genOptions, artifactsGenerator), 1); myAntProject.add(new Target(BuildProperties.TARGET_BUILD_MODULES, buildModulesTargetNames.toString(), CompilerBundle.message("generated.ant.build.build.all.modules.target.name"), null), 1); diff --git a/java/compiler/openapi/src/com/intellij/compiler/ant/ChunkBuildExtension.java b/java/compiler/openapi/src/com/intellij/compiler/ant/ChunkBuildExtension.java index 9693b333fe68..eb896db7ffe7 100644 --- a/java/compiler/openapi/src/com/intellij/compiler/ant/ChunkBuildExtension.java +++ b/java/compiler/openapi/src/com/intellij/compiler/ant/ChunkBuildExtension.java @@ -26,6 +26,7 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public abstract class ChunkBuildExtension { @@ -37,9 +38,16 @@ public abstract class ChunkBuildExtension { public abstract void process(Project project, ModuleChunk chunk, GenerationOptions genOptions, CompositeGenerator generator); + public void generateProjectTargets(Project project, GenerationOptions genOptions, CompositeGenerator generator) { + } + public void generateProperties(final PropertyFileGenerator generator, final Project project, final GenerationOptions options) { } + public List getCleanTargetNames(Project project, GenerationOptions genOptions) { + return Collections.emptyList(); + } + public static String[] getAllTargets(ModuleChunk chunk) { List allTargets = new ArrayList(); final ChunkBuildExtension[] extensions = Extensions.getRootArea().getExtensionPoint(EP_NAME).getExtensions();