boolean (@NotNull OrderRootType type, @NotNull ModuleRootModel rootModel, @NotNull Collection<String> result, boolean includeProduction, boolean includeTests) { if (!type.equals(OrderRootType.CLASSES)) return false; if (!ExternalSystemApiUtil.isExternalSystemAwareModule(GradleConstants.SYSTEM_ID, rootModel.getModule())) return false; final String gradleProjectPath = ExternalSystemModulePropertyManager.getInstance(rootModel.getModule()).getRootProjectPath(); if (gradleProjectPath == null) { LOG.warn("Root project path of the Gradle project not found for " + rootModel.getModule()); return false; } Project project = rootModel.getModule().getProject(); final ExternalProjectDataCache externalProjectDataCache = ExternalProjectDataCache.getInstance(project); assert externalProjectDataCache != null; final ExternalProject externalRootProject = externalProjectDataCache.getRootExternalProject(gradleProjectPath); if (externalRootProject == null) { LOG.debug("Root external project was not yep imported for the project path: " + gradleProjectPath); return false; } Map<String, ExternalSourceSet> externalSourceSets = externalProjectDataCache.findExternalProject(externalRootProject, rootModel.getModule()); if (externalSourceSets.isEmpty()) { return false; } boolean isDelegatedBuildEnabled = GradleProjectSettings.isDelegatedBuildEnabled(rootModel.getModule()); for (ExternalSourceSet sourceSet : externalSourceSets.values()) { if (includeTests) { if (isDelegatedBuildEnabled) { addOutputModuleRoots(sourceSet.getSources().get(ExternalSystemSourceType.TEST), result, true); } addOutputModuleRoots(sourceSet.getSources().get(ExternalSystemSourceType.TEST_RESOURCE), result, isDelegatedBuildEnabled); } if (includeProduction) { if (isDelegatedBuildEnabled) { addOutputModuleRoots(sourceSet.getSources().get(ExternalSystemSourceType.SOURCE), result, true); } addOutputModuleRoots(sourceSet.getSources().get(ExternalSystemSourceType.RESOURCE), result, isDelegatedBuildEnabled); } } return true; }