diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/compiler/MavenResourceCompiler.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/compiler/MavenResourceCompiler.java
index 8d59172b5f87..5ac6c023a119 100644
--- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/compiler/MavenResourceCompiler.java
+++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/compiler/MavenResourceCompiler.java
@@ -377,7 +377,15 @@ public class MavenResourceCompiler implements ClassPostProcessingCompiler {
try {
outputFile.getParentFile().mkdirs();
- if (eachItem.isFiltered()) {
+ boolean shouldFilter = eachItem.isFiltered();
+ if (sourceFile.length() > 10 * 1024 * 1024) {
+ context.addMessage(CompilerMessageCategory.WARNING,
+ "Maven: File is too big to be filtered. Most likely it is a binary file and should be excluded from filtering.",
+ sourceVirtualFile.getUrl(), -1, -1);
+ shouldFilter = false;
+ }
+
+ if (shouldFilter) {
String charset = sourceVirtualFile.getCharset().name();
String text = new String(FileUtil.loadFileBytes(sourceFile), charset);
String escapedCharacters = "properties".equals(sourceVirtualFile.getExtension()) ? "\\" : null;
diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/compiler/ResourceFilteringTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/compiler/ResourceFilteringTest.java
index fef4b7a36715..88e2949c9e7a 100644
--- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/compiler/ResourceFilteringTest.java
+++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/compiler/ResourceFilteringTest.java
@@ -3,8 +3,8 @@ package org.jetbrains.idea.maven.compiler;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.idea.maven.MavenImportingTestCase;
-import org.jetbrains.idea.maven.importing.MavenRootModelAdapter;
import org.jetbrains.idea.maven.importing.MavenDefaultModifiableModelsProvider;
+import org.jetbrains.idea.maven.importing.MavenRootModelAdapter;
import java.io.IOException;
@@ -675,6 +675,26 @@ public class ResourceFilteringTest extends MavenImportingTestCase {
"value2=\\value\n");
}
+ public void testDoNotFilterButCopyBigFiles() throws Exception {
+ createProjectSubFile("resources/file.xyz").setBinaryContent(new byte[1024 * 1024 * 20]);
+
+ importProject("test" +
+ "project" +
+ "1" +
+
+ "" +
+ " " +
+ " " +
+ " resources" +
+ " true" +
+ " " +
+ " " +
+ "");
+ compileModules("project");
+
+ assertNotNull(myProjectPom.getParent().findFileByRelativePath("target/classes/file.xyz"));
+ }
+
private void assertResult(String relativePath, String content) throws IOException {
assertResult(myProjectPom, relativePath, content);
}