diff --git a/jps/src/org/jetbrains/jps/artifacts/ComplexLayoutElement.groovy b/jps/src/org/jetbrains/jps/artifacts/ComplexLayoutElement.groovy index 2ed10cfcfda1..c105923dd481 100644 --- a/jps/src/org/jetbrains/jps/artifacts/ComplexLayoutElement.groovy +++ b/jps/src/org/jetbrains/jps/artifacts/ComplexLayoutElement.groovy @@ -75,11 +75,16 @@ class ArtifactLayoutElement extends ComplexLayoutElement { } def output = project.artifactBuilder.artifactOutputs[artifact] if (output != null) { - project.binding.ant.fileset(dir: output) + LayoutElement root = artifact.rootElement + if (root instanceof ArchiveElement) { + project.binding.ant.fileset(file: "$output/$root.name") + } + else { + project.binding.ant.fileset(dir: output) + } } else { project.error("Required artifact $artifactName is not build") -// super.build(project) } } diff --git a/jps/testData/artifactIncludesArchiveArtifact/a.txt b/jps/testData/artifactIncludesArchiveArtifact/a.txt new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/jps/testData/artifactIncludesArchiveArtifact/artifactIncludesArchiveArtifact.ipr b/jps/testData/artifactIncludesArchiveArtifact/artifactIncludesArchiveArtifact.ipr new file mode 100644 index 000000000000..92ae3b78b349 --- /dev/null +++ b/jps/testData/artifactIncludesArchiveArtifact/artifactIncludesArchiveArtifact.ipr @@ -0,0 +1,24 @@ + + + + + $PROJECT_DIR$/data + + + + + + $PROJECT_DIR$/out/artifacts/data + + + + + + + + + + + + + diff --git a/jps/testData/artifactIncludesArchiveArtifact/data/b.txt b/jps/testData/artifactIncludesArchiveArtifact/data/b.txt new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/jps/testSrc/org/jetbrains/jps/ArtifactIncludesArchiveArtifactTest.groovy b/jps/testSrc/org/jetbrains/jps/ArtifactIncludesArchiveArtifactTest.groovy new file mode 100644 index 000000000000..230f2fb1e2a8 --- /dev/null +++ b/jps/testSrc/org/jetbrains/jps/ArtifactIncludesArchiveArtifactTest.groovy @@ -0,0 +1,30 @@ +package org.jetbrains.jps + +/** + * @author nik + */ +class ArtifactIncludesArchiveArtifactTest extends JpsBuildTestCase { + public void test() throws Exception { + def name = "artifactIncludesArchiveArtifact" + def project = buildAll("testData/$name/${name}.ipr", [:], {Project project -> + project.targetFolder = null + }) + try { + assertOutput(project, "testData/$name/out", { + dir("artifacts") { + dir("data") { + archive("a.jar") { + dir("META-INF") { + file("MANIFEST.MF") + } + file("a.txt") + } + } + } + }) + } + finally { + project.clean() + } + } +} diff --git a/jps/testSrc/org/jetbrains/jps/JpsBuildTestCase.groovy b/jps/testSrc/org/jetbrains/jps/JpsBuildTestCase.groovy index f109252537f8..d6ae5059760d 100644 --- a/jps/testSrc/org/jetbrains/jps/JpsBuildTestCase.groovy +++ b/jps/testSrc/org/jetbrains/jps/JpsBuildTestCase.groovy @@ -28,9 +28,9 @@ abstract class JpsBuildTestCase extends TestCase { def protected buildAll(String projectPath, Map pathVariables, Closure initProject) { Project project = loadProject(projectPath, pathVariables) - initProject(project) def target = FileUtil.createTempDirectory("targetDir") project.targetFolder = target.absolutePath + initProject(project) project.clean() project.makeAll() project.buildArtifacts()