void (@Nullable GradleProjectSettings compositeRootSettings, GradleSettings settings, GradleExecutionSettings result, Project project, String projectPath) { if (compositeRootSettings == null || compositeRootSettings.getCompositeBuild() == null) return; GradleProjectSettings.CompositeBuild compositeBuild = compositeRootSettings.getCompositeBuild(); if (compositeBuild.getCompositeDefinitionSource() == CompositeDefinitionSource.SCRIPT) { if (pathsEqual(compositeRootSettings.getExternalProjectPath(), projectPath)) return; for (BuildParticipant buildParticipant : compositeBuild.getCompositeParticipants()) { if (pathsEqual(buildParticipant.getRootPath(), projectPath)) continue; if (Path.of(buildParticipant.getRootPath()).endsWith(GradleConstants.BUILD_SRC_NAME)) continue; if (buildParticipant.getProjects().stream().anyMatch(path -> pathsEqual(path, projectPath))) { continue; } result.getExecutionWorkspace().addBuildParticipant(new GradleBuildParticipant(buildParticipant.getRootPath())); } return; } for (GradleProjectSettings projectSettings : settings.getLinkedProjectsSettings()) { if (projectSettings == compositeRootSettings) continue; if (compositeBuild.getCompositeParticipants() .stream() .noneMatch(participant -> pathsEqual(participant.getRootPath(), projectSettings.getExternalProjectPath()))) { continue; } GradleBuildParticipant buildParticipant = new GradleBuildParticipant(projectSettings.getExternalProjectPath()); ExternalProjectInfo projectData = ProjectDataManager.getInstance() .getExternalProjectData(project, GradleConstants.SYSTEM_ID, projectSettings.getExternalProjectPath()); if (projectData == null || projectData.getExternalProjectStructure() == null) continue; Collection<DataNode<ModuleData>> moduleNodes = findAll(projectData.getExternalProjectStructure(), ProjectKeys.MODULE); for (DataNode<ModuleData> moduleNode : moduleNodes) { ModuleData moduleData = moduleNode.getData(); if (moduleData.getArtifacts().isEmpty()) { Collection<DataNode<GradleSourceSetData>> sourceSetNodes = findAll(moduleNode, GradleSourceSetData.KEY); for (DataNode<GradleSourceSetData> sourceSetNode : sourceSetNodes) { buildParticipant.addModule(sourceSetNode.getData()); } } else { buildParticipant.addModule(moduleData); } } result.getExecutionWorkspace().addBuildParticipant(buildParticipant); } }