From d304f3d5d2e89a287f1493f3c21785a9131da87e Mon Sep 17 00:00:00 2001 From: Alex Plate Date: Thu, 19 Jan 2023 13:12:28 +0200 Subject: [PATCH] [Workspace Model] Fix JPS compilation GitOrigin-RevId: 9a5705bcc746fc854557546ed2bc841ef55fcffe --- .../jps/model/serialization/JpsProjectLoader.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/jps/model-serialization/src/org/jetbrains/jps/model/serialization/JpsProjectLoader.java b/jps/model-serialization/src/org/jetbrains/jps/model/serialization/JpsProjectLoader.java index 4929f9b5fb6e..944facb4badb 100644 --- a/jps/model-serialization/src/org/jetbrains/jps/model/serialization/JpsProjectLoader.java +++ b/jps/model-serialization/src/org/jetbrains/jps/model/serialization/JpsProjectLoader.java @@ -45,6 +45,7 @@ import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; +import java.util.stream.Collectors; import static org.jetbrains.jps.model.serialization.java.compiler.JpsJavaCompilerConfigurationSerializer.BYTECODE_TARGET_LEVEL; @@ -398,6 +399,16 @@ public final class JpsProjectLoader extends JpsLoaderBase { if (data == null) { LOG.info("Module '" + getModuleName(file) + "' is skipped: " + file.toAbsolutePath() + " doesn't exist"); } + else { + // Copy the content roots that are defined in a separate tag, to a general content root component + List components = data.getChildren("component"); + Map componentsByName = components.stream().collect(Collectors.toMap(o -> o.getAttributeValue("name"), v -> v)); + Element rootManager = componentsByName.get("NewModuleRootManager"); + Element additionalElements = componentsByName.get("AdditionalModuleElements"); + if (rootManager != null && additionalElements != null) { + JDOMUtil.deepMerge(rootManager, additionalElements); + } + } return new Pair<>(file, data); }, executor));