diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/workspaceModel/WorkspaceFolderImporter.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/workspaceModel/WorkspaceFolderImporter.kt index 4c4d625921c1..a9347bd2b504 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/workspaceModel/WorkspaceFolderImporter.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/workspaceModel/WorkspaceFolderImporter.kt @@ -1,11 +1,13 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.idea.maven.importing.workspaceModel +import com.intellij.codeInsight.multiverse.isSharedSourceSupportEnabled import com.intellij.ide.util.projectWizard.importSources.JavaSourceRootDetectionUtil import com.intellij.java.workspace.entities.JavaResourceRootPropertiesEntity import com.intellij.java.workspace.entities.JavaSourceRootPropertiesEntity import com.intellij.java.workspace.entities.javaResourceRoots import com.intellij.java.workspace.entities.javaSourceRoots +import com.intellij.openapi.project.Project import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.vfs.VfsUtilCore import com.intellij.platform.workspace.jps.entities.* @@ -36,7 +38,8 @@ internal class WorkspaceFolderImporter( private val virtualFileUrlManager: VirtualFileUrlManager, private val importingSettings: MavenImportingSettings, private val importingContext: FolderImportingContext, - private val workspaceConfigurators: List + private val workspaceConfigurators: List, + private val project: Project ) { fun createContentRoots( @@ -53,8 +56,7 @@ internal class WorkspaceFolderImporter( if (moduleType == StandardMavenModuleType.MAIN_ONLY_ADDITIONAL) return outputFolders val allFolders = mutableListOf() - - addContentRoot(cachedFolders, allFolders) + addContentRoot(cachedFolders, allFolders, isSharedSourceSupportEnabled(project)) addCachedFolders(moduleType, cachedFolders, allFolders) for (root in ContentRootCollector.collect(allFolders)) { @@ -77,12 +79,15 @@ internal class WorkspaceFolderImporter( } private fun addContentRoot(cachedFolders: CachedProjectFolders, - allFolders: MutableList) { + allFolders: MutableList, + duplicatesAreAllowed: Boolean = false) { val contentRoot = cachedFolders.projectContentRootPath - // make sure we don't have overlapping content roots in different modules - val alreadyRegisteredRoot = importingContext.alreadyRegisteredContentRoots.contains(contentRoot) - if (alreadyRegisteredRoot) return + if (!duplicatesAreAllowed) { + // make sure we don't have overlapping content roots in different modules + val alreadyRegisteredRoot = importingContext.alreadyRegisteredContentRoots.contains(contentRoot) + if (alreadyRegisteredRoot) return + } allFolders.add(ContentRootCollector.ProjectRootFolder(contentRoot)) importingContext.alreadyRegisteredContentRoots.add(contentRoot) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/workspaceModel/WorkspaceModuleImporter.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/workspaceModel/WorkspaceModuleImporter.kt index 6b58fa5c7959..bc1ef3f0d905 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/workspaceModel/WorkspaceModuleImporter.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/workspaceModel/WorkspaceModuleImporter.kt @@ -108,7 +108,7 @@ internal class WorkspaceModuleImporter( moduleEntity: ModuleEntity, folderImportingContext: WorkspaceFolderImporter.FolderImportingContext, ) { - val folderImporter = WorkspaceFolderImporter(builder, virtualFileUrlManager, importingSettings, folderImportingContext, workspaceConfigurators) + val folderImporter = WorkspaceFolderImporter(builder, virtualFileUrlManager, importingSettings, folderImportingContext, workspaceConfigurators, project) val outputFolders = folderImporter.createContentRoots(importData.mavenProject, importData.moduleData.type, moduleEntity, stats) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/workspaceModel/WorkspaceProjectImporter.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/workspaceModel/WorkspaceProjectImporter.kt index 0cbb537c9661..9467808f0467 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/workspaceModel/WorkspaceProjectImporter.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/workspaceModel/WorkspaceProjectImporter.kt @@ -578,7 +578,8 @@ internal open class WorkspaceProjectImporter( workspaceModel.getVirtualFileUrlManager(), mavenManager.importingSettings, folderImportingContext, - MavenWorkspaceConfigurator.EXTENSION_POINT_NAME.extensionList) + MavenWorkspaceConfigurator.EXTENSION_POINT_NAME.extensionList, + project) var numberOfModules = 0 readMavenExternalSystemData(builder).forEach { data ->