diff --git a/java/compiler/impl/src/com/intellij/compiler/ant/artifacts/ArtifactsGenerator.java b/java/compiler/impl/src/com/intellij/compiler/ant/artifacts/ArtifactsGenerator.java index 57b54a7405f1..9f91d70ba623 100644 --- a/java/compiler/impl/src/com/intellij/compiler/ant/artifacts/ArtifactsGenerator.java +++ b/java/compiler/impl/src/com/intellij/compiler/ant/artifacts/ArtifactsGenerator.java @@ -47,8 +47,10 @@ public class ArtifactsGenerator { private final PackagingElementResolvingContext myResolvingContext; private final ArtifactAntGenerationContextImpl myContext; private final List myAllArtifacts; + private final GenerationOptions myGenOptions; public ArtifactsGenerator(Project project, GenerationOptions genOptions) { + myGenOptions = genOptions; myResolvingContext = ArtifactManager.getInstance(project).getResolvingContext(); myAllArtifacts = new ArrayList(Arrays.asList(ArtifactManager.getInstance(project).getSortedArtifacts())); @@ -174,7 +176,7 @@ public class ArtifactsGenerator { private void generateTasksForArtifacts(Artifact artifact, Target artifactTarget, final boolean preprocessing) { for (ChunkBuildExtension extension : ChunkBuildExtension.EP_NAME.getExtensions()) { - extension.generateTasksForArtifact(myResolvingContext.getProject(), artifact, preprocessing, artifactTarget); + extension.generateTasksForArtifact(artifact, preprocessing, myResolvingContext.getProject(), myGenOptions, artifactTarget); } } 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 d0318e1d9ac3..5c3bdcdecd77 100644 --- a/java/compiler/openapi/src/com/intellij/compiler/ant/ChunkBuildExtension.java +++ b/java/compiler/openapi/src/com/intellij/compiler/ant/ChunkBuildExtension.java @@ -45,7 +45,8 @@ public abstract class ChunkBuildExtension { public void generateProperties(final PropertyFileGenerator generator, final Project project, final GenerationOptions options) { } - public void generateTasksForArtifact(Project project, Artifact artifact, boolean preprocessing, CompositeGenerator generator) { + public void generateTasksForArtifact(Artifact artifact, boolean preprocessing, Project project, GenerationOptions genOptions, + CompositeGenerator generator) { } public List getCleanTargetNames(Project project, GenerationOptions genOptions) { diff --git a/plugins/ant/src/com/intellij/lang/ant/config/impl/artifacts/AntArtifactBuildExtension.java b/plugins/ant/src/com/intellij/lang/ant/config/impl/artifacts/AntArtifactBuildExtension.java index 89e301020cda..56e921d20e74 100644 --- a/plugins/ant/src/com/intellij/lang/ant/config/impl/artifacts/AntArtifactBuildExtension.java +++ b/plugins/ant/src/com/intellij/lang/ant/config/impl/artifacts/AntArtifactBuildExtension.java @@ -16,54 +16,23 @@ package com.intellij.lang.ant.config.impl.artifacts; import com.intellij.compiler.ant.*; -import com.intellij.compiler.ant.taskdefs.AntCall; -import com.intellij.compiler.ant.taskdefs.Import; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Pair; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.packaging.artifacts.Artifact; -import com.intellij.packaging.artifacts.ArtifactManager; import com.intellij.packaging.artifacts.ArtifactPropertiesProvider; import com.intellij.util.ArrayUtil; +import com.intellij.util.PathUtil; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.Set; /** * @author nik */ public class AntArtifactBuildExtension extends ChunkBuildExtension { @Override - public void generateProjectTargets(Project project, GenerationOptions genOptions, CompositeGenerator generator) { - final Artifact[] artifacts = ArtifactManager.getInstance(project).getSortedArtifacts(); - Set filesToImport = new LinkedHashSet(); - for (Artifact artifact : artifacts) { - for (Boolean value : Arrays.asList(true, false)) { - final AntArtifactProperties properties = getProperties(artifact, value); - if (properties != null) { - filesToImport.add(properties.getFileUrl()); - } - } - } - for (String url : filesToImport) { - final String path = VfsUtil.urlToPath(url); - final String relativePath = GenerationUtils.toRelativePath(path, BuildProperties.getProjectBaseDir(project), BuildProperties.getProjectBaseDirProperty(), genOptions); - generator.add(new Import(relativePath)); - } - } - - @Override - public void generateTasksForArtifact(Project project, Artifact artifact, boolean preprocessing, CompositeGenerator generator) { - final AntArtifactProperties properties = getProperties(artifact, preprocessing); - if (properties != null) { - generator.add(new AntCall(properties.getTargetName())); - } - } - - @Nullable - private static AntArtifactProperties getProperties(Artifact artifact, boolean preprocessing) { + public void generateTasksForArtifact(Artifact artifact, + boolean preprocessing, Project project, + GenerationOptions genOptions, CompositeGenerator generator) { final ArtifactPropertiesProvider provider; if (preprocessing) { provider = AntArtifactPreProcessingPropertiesProvider.getInstance(); @@ -72,7 +41,14 @@ public class AntArtifactBuildExtension extends ChunkBuildExtension { provider = AntArtifactPostprocessingPropertiesProvider.getInstance(); } final AntArtifactProperties properties = (AntArtifactProperties)artifact.getProperties(provider); - return properties != null && properties.isEnabled() ? properties : null; + if (properties != null && properties.isEnabled()) { + final String path = VfsUtil.urlToPath(properties.getFileUrl()); + String fileName = PathUtil.getFileName(path); + String dirPath = PathUtil.getParentPath(path); + final String relativePath = GenerationUtils.toRelativePath(dirPath, BuildProperties.getProjectBaseDir(project), BuildProperties.getProjectBaseDirProperty(), genOptions); + generator.add(new Tag("ant", Pair.create("antfile", fileName), Pair.create("target", properties.getTargetName()), + Pair.create("dir", relativePath))); + } } @NotNull