diff --git a/jps/antLayout/src/jetbrains/antlayout/tasks/LayoutTask.java b/jps/antLayout/src/jetbrains/antlayout/tasks/LayoutTask.java
index d2308112a4d4..ac2419a528f7 100755
--- a/jps/antLayout/src/jetbrains/antlayout/tasks/LayoutTask.java
+++ b/jps/antLayout/src/jetbrains/antlayout/tasks/LayoutTask.java
@@ -33,6 +33,10 @@ public class LayoutTask extends Task {
containers.add(container);
}
+ public void addModule(IdeaModule module) {
+ containers.add(new FileSetContainer(module));
+ }
+
public void addFileset(FileSet fileSet) {
containers.add(new FileSetContainer(fileSet));
}
diff --git a/jps/src/org/jetbrains/jps/idea/IdeaProjectLoader.groovy b/jps/src/org/jetbrains/jps/idea/IdeaProjectLoader.groovy
index 4536c49a435d..cceaca667b54 100644
--- a/jps/src/org/jetbrains/jps/idea/IdeaProjectLoader.groovy
+++ b/jps/src/org/jetbrains/jps/idea/IdeaProjectLoader.groovy
@@ -138,7 +138,7 @@ public class IdeaProjectLoader {
}
private NodeList loadProjectLibraries(Node librariesComponent, Project project, String projectBasePath) {
- return librariesComponent?.library.each {Node libTag ->
+ return librariesComponent?.library?.each {Node libTag ->
project.createLibrary(libTag."@name", libraryInitializer(libTag, projectBasePath, null))
}
}
diff --git a/jps/testData/overwriteTest/data/d1/x.txt b/jps/testData/overwriteTest/data/d1/x.txt
new file mode 100644
index 000000000000..562890baa53a
--- /dev/null
+++ b/jps/testData/overwriteTest/data/d1/x.txt
@@ -0,0 +1 @@
+d1
\ No newline at end of file
diff --git a/jps/testData/overwriteTest/data/d2/x.txt b/jps/testData/overwriteTest/data/d2/x.txt
new file mode 100644
index 000000000000..624c89d7c4d3
--- /dev/null
+++ b/jps/testData/overwriteTest/data/d2/x.txt
@@ -0,0 +1 @@
+d2
\ No newline at end of file
diff --git a/jps/testData/overwriteTest/dep/dep.iml b/jps/testData/overwriteTest/dep/dep.iml
new file mode 100644
index 000000000000..d5c074327501
--- /dev/null
+++ b/jps/testData/overwriteTest/dep/dep.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jps/testData/overwriteTest/dep/src/a.xml b/jps/testData/overwriteTest/dep/src/a.xml
new file mode 100644
index 000000000000..a185e52cec98
--- /dev/null
+++ b/jps/testData/overwriteTest/dep/src/a.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/jps/testData/overwriteTest/overwriteTest.iml b/jps/testData/overwriteTest/overwriteTest.iml
new file mode 100644
index 000000000000..d5c074327501
--- /dev/null
+++ b/jps/testData/overwriteTest/overwriteTest.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jps/testData/overwriteTest/overwriteTest.ipr b/jps/testData/overwriteTest/overwriteTest.ipr
new file mode 100644
index 000000000000..96384495dfed
--- /dev/null
+++ b/jps/testData/overwriteTest/overwriteTest.ipr
@@ -0,0 +1,49 @@
+
+
+
+
+ $PROJECT_DIR$/out/artifacts/dirs
+
+
+
+
+
+
+ $PROJECT_DIR$/out/artifacts/classes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jps/testData/overwriteTest/src/a.xml b/jps/testData/overwriteTest/src/a.xml
new file mode 100644
index 000000000000..8d3d60bcf499
--- /dev/null
+++ b/jps/testData/overwriteTest/src/a.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/jps/testSrc/org/jetbrains/jps/JpsBuildTestCase.groovy b/jps/testSrc/org/jetbrains/jps/JpsBuildTestCase.groovy
index 1695195745eb..17540cb57cbe 100644
--- a/jps/testSrc/org/jetbrains/jps/JpsBuildTestCase.groovy
+++ b/jps/testSrc/org/jetbrains/jps/JpsBuildTestCase.groovy
@@ -2,7 +2,9 @@ package org.jetbrains.jps
import junit.framework.TestCase
import org.codehaus.gant.GantBinding
-import org.jetbrains.jps.idea.IdeaProjectLoader;
+import org.jetbrains.jps.idea.IdeaProjectLoader
+import org.jetbrains.jps.util.FileSystemItem
+import org.jetbrains.jps.util.FileUtil;
/**
* @author nik
diff --git a/jps/testSrc/org/jetbrains/jps/OverwriteTest.groovy b/jps/testSrc/org/jetbrains/jps/OverwriteTest.groovy
new file mode 100644
index 000000000000..3f6dedefab9a
--- /dev/null
+++ b/jps/testSrc/org/jetbrains/jps/OverwriteTest.groovy
@@ -0,0 +1,27 @@
+package org.jetbrains.jps
+
+/**
+ * @author nik
+ */
+class OverwriteTest extends JpsBuildTestCase {
+ public void testOverwriteArtifacts() throws Exception {
+ doTest("testData/overwriteTest/overwriteTest.ipr", {}, {
+ dir("artifacts") {
+ dir("classes") {
+ file("a.xml", "")
+ }
+ dir("dirs") {
+ file("x.txt", "d2")
+ }
+ }
+ dir("production") {
+ dir("dep") {
+ file("a.xml", "")
+ }
+ dir("overwriteTest") {
+ file("a.xml", "")
+ }
+ }
+ })
+ }
+}
diff --git a/jps/testSrc/org/jetbrains/jps/FileSystemItem.groovy b/jps/testSrc/org/jetbrains/jps/util/FileSystemItem.groovy
similarity index 98%
rename from jps/testSrc/org/jetbrains/jps/FileSystemItem.groovy
rename to jps/testSrc/org/jetbrains/jps/util/FileSystemItem.groovy
index 77e814f25164..f04a45049785 100644
--- a/jps/testSrc/org/jetbrains/jps/FileSystemItem.groovy
+++ b/jps/testSrc/org/jetbrains/jps/util/FileSystemItem.groovy
@@ -1,4 +1,4 @@
-package org.jetbrains.jps
+package org.jetbrains.jps.util
import junit.framework.Assert
diff --git a/jps/testSrc/org/jetbrains/jps/FileUtil.groovy b/jps/testSrc/org/jetbrains/jps/util/FileUtil.groovy
similarity index 99%
rename from jps/testSrc/org/jetbrains/jps/FileUtil.groovy
rename to jps/testSrc/org/jetbrains/jps/util/FileUtil.groovy
index 5240dd97bd56..9af86d7a25c1 100644
--- a/jps/testSrc/org/jetbrains/jps/FileUtil.groovy
+++ b/jps/testSrc/org/jetbrains/jps/util/FileUtil.groovy
@@ -1,4 +1,4 @@
-package org.jetbrains.jps
+package org.jetbrains.jps.util
/**
* @author nik
diff --git a/jps/testSrc/org/jetbrains/jps/ZipUtil.groovy b/jps/testSrc/org/jetbrains/jps/util/ZipUtil.groovy
similarity index 98%
rename from jps/testSrc/org/jetbrains/jps/ZipUtil.groovy
rename to jps/testSrc/org/jetbrains/jps/util/ZipUtil.groovy
index ddbf5c10b22e..4f1227b840ad 100644
--- a/jps/testSrc/org/jetbrains/jps/ZipUtil.groovy
+++ b/jps/testSrc/org/jetbrains/jps/util/ZipUtil.groovy
@@ -1,4 +1,4 @@
-package org.jetbrains.jps
+package org.jetbrains.jps.util
import java.util.zip.ZipEntry
import java.util.zip.ZipFile