diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/java/ResourceRootDescriptor.java b/jps/jps-builders/src/org/jetbrains/jps/builders/java/ResourceRootDescriptor.java index 50187722e2f3..fa4f2f977b4c 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/builders/java/ResourceRootDescriptor.java +++ b/jps/jps-builders/src/org/jetbrains/jps/builders/java/ResourceRootDescriptor.java @@ -19,8 +19,12 @@ import com.intellij.openapi.util.io.FileUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.jps.builders.BuildRootDescriptor; import org.jetbrains.jps.incremental.ResourcesTarget; +import org.jetbrains.jps.model.JpsProject; +import org.jetbrains.jps.model.java.JpsJavaExtensionService; +import org.jetbrains.jps.model.java.compiler.JpsCompilerExcludes; import java.io.File; +import java.io.FileFilter; import java.util.Set; /** @@ -61,6 +65,19 @@ public class ResourceRootDescriptor extends BuildRootDescriptor { return myPackagePrefix; } + @NotNull + @Override + public FileFilter createFileFilter() { + final JpsProject project = getTarget().getModule().getProject(); + final JpsCompilerExcludes excludes = JpsJavaExtensionService.getInstance().getOrCreateCompilerConfiguration(project).getCompilerExcludes(); + return new FileFilter() { + @Override + public boolean accept(File file) { + return !excludes.isExcluded(file); + } + }; + } + @Override public boolean isGenerated() { return false; diff --git a/jps/jps-builders/testSrc/org/jetbrains/jps/builders/resources/ResourceCopyingTest.java b/jps/jps-builders/testSrc/org/jetbrains/jps/builders/resources/ResourceCopyingTest.java index d5904fc8035f..56b4824d0f0c 100644 --- a/jps/jps-builders/testSrc/org/jetbrains/jps/builders/resources/ResourceCopyingTest.java +++ b/jps/jps-builders/testSrc/org/jetbrains/jps/builders/resources/ResourceCopyingTest.java @@ -15,6 +15,7 @@ */ package org.jetbrains.jps.builders.resources; +import com.intellij.openapi.util.io.FileUtil; import com.intellij.util.PathUtil; import org.jetbrains.jps.builders.JpsBuildTestCase; import org.jetbrains.jps.model.java.JavaResourceRootType; @@ -73,4 +74,16 @@ public class ResourceCopyingTest extends JpsBuildTestCase { rebuildAllModules(); assertOutput(m, fs().file("A.java", "xxx")); } + + public void testExcludesInResourceRoot() { + String file = createFile("res/A.java", "xxx"); + String excludedFile = createFile("res/excluded.java", "XXX"); + JpsModule m = addModule("m"); + m.addSourceRoot(JpsPathUtil.pathToUrl(PathUtil.getParentPath(file)), JavaResourceRootType.RESOURCE); + JpsJavaExtensionService.getInstance().getOrCreateCompilerConfiguration(myProject).getCompilerExcludes().addExcludedFile( + "file://" + FileUtil.toSystemIndependentName(excludedFile) + ); + rebuildAllModules(); + assertOutput(m, fs().file("A.java", "xxx")); + } }