List<ResourceRootDescriptor> (@NotNull JpsModel model, @NotNull ModuleExcludeIndex index, @NotNull IgnoredFileIndex ignoredFileIndex, @NotNull BuildDataPaths dataPaths) { List<ResourceRootDescriptor> roots = new ArrayList<>(); JavaSourceRootType type = isTests() ? JavaSourceRootType.TEST_SOURCE : JavaSourceRootType.SOURCE; Iterable<ExcludedJavaSourceRootProvider> excludedRootProviders = JpsServiceManager.getInstance().getExtensions(ExcludedJavaSourceRootProvider.class); FileFilter filterForExcludedPatterns = index.getModuleFileFilterHonorExclusionPatterns(myModule); for (JpsTypedModuleSourceRoot<JavaSourceRootProperties> sourceRoot : myModule.getSourceRoots(type)) { if (!isExcludedFromCompilation(excludedRootProviders, sourceRoot)) { final String packagePrefix = sourceRoot.getProperties().getPackagePrefix(); final File rootFile = sourceRoot.getFile(); roots.add(new FilteredResourceRootDescriptor(rootFile, this, packagePrefix, computeRootExcludes(rootFile, index), filterForExcludedPatterns)); } } JavaResourceRootType resourceType = isTests() ? JavaResourceRootType.TEST_RESOURCE : JavaResourceRootType.RESOURCE; for (JpsTypedModuleSourceRoot<JavaResourceRootProperties> root : myModule.getSourceRoots(resourceType)) { if (!isExcludedFromCompilation(excludedRootProviders, root)) { File rootFile = root.getFile(); String relativeOutputPath = root.getProperties().getRelativeOutputPath(); roots.add(new ResourceRootDescriptor(rootFile, this, relativeOutputPath.replace('/', '.'), computeRootExcludes(rootFile, index), filterForExcludedPatterns)); } } return roots; }