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()