[maven] IDEA-255308 introduce MavenProjectModifications

GitOrigin-RevId: 3acaacc9d422264e4e05143dff6a407b2a62ae44
This commit is contained in:
Dmitry Kichinsky
2025-01-18 18:44:28 +00:00
committed by intellij-monorepo-bot
parent 6ff922839e
commit f8813bbf83
13 changed files with 91 additions and 108 deletions
@@ -65,7 +65,7 @@ class MavenAnnotationProcessorConfigurator : MavenApplicableConfigurator(PLUGIN_
mavenProjectToModuleNamesCache[each.mavenProject.mavenId] = moduleNames
}
val changedOnlyProjects = context.mavenProjectsWithModules.mapNotNull { if (it.changes.hasChanges()) it.mavenProject else null }
val changedOnlyProjects = context.mavenProjectsWithModules.mapNotNull { if (it.hasChanges) it.mavenProject else null }
val map = HashMap<MavenProject, MutableList<String>>()
collectProcessorModuleNames(changedOnlyProjects.asIterable(),
@@ -114,7 +114,7 @@ class MavenAnnotationProcessorConfigurator : MavenApplicableConfigurator(PLUGIN_
val perProjectProcessorModuleNames: Map<MavenProject, MutableList<String>> = ANNOTATION_PROCESSOR_MODULE_NAMES[context, java.util.Map.of()]
val changedOnly = context.mavenProjectsWithModules.filter { it: MavenProjectWithModules<Module> -> it.changes.hasChanges() }
val changedOnly = context.mavenProjectsWithModules.filter { it: MavenProjectWithModules<Module> -> it.hasChanges }
val projectWithModules = changedOnly.map { it: MavenProjectWithModules<Module> ->
val processorModuleNames = perProjectProcessorModuleNames.getOrDefault(it.mavenProject, listOf())
MavenProjectWithProcessorModules(it.mavenProject, it.modules, processorModuleNames)
@@ -17,7 +17,6 @@ import org.jdom.Element
import org.jetbrains.annotations.ApiStatus
import org.jetbrains.annotations.NonNls
import org.jetbrains.idea.maven.project.MavenProject
import org.jetbrains.idea.maven.project.MavenProjectChangesBase
import org.jetbrains.idea.maven.project.MavenProjectsTree
import org.jetbrains.idea.maven.utils.MavenJDOMUtil.findChildByPath
import org.jetbrains.idea.maven.utils.MavenJDOMUtil.findChildValueByPath
@@ -121,7 +120,7 @@ interface MavenWorkspaceConfigurator {
*/
interface MavenProjectWithModules<M> {
val mavenProject: MavenProject
val changes: MavenProjectChangesBase
val hasChanges: Boolean
val modules: List<ModuleWithType<M>>
}
@@ -194,7 +193,7 @@ open class MavenApplicableConfigurator(private val pluginGroupId: String, privat
}
fun <M> MavenWorkspaceConfigurator.MavenProjectWithModules<M>.hasChanges(): Boolean {
return this.changes.hasChanges()
return this.hasChanges
}
@@ -22,27 +22,29 @@ interface MavenProjectImporter {
fun createdModules(): List<Module>
companion object {
@JvmStatic
fun createStaticImporter(project: Project,
projectsTree: MavenProjectsTree,
projectsToImportWithChanges: Map<MavenProject, MavenProjectChangesBase>,
modelsProvider: IdeModifiableModelsProvider,
importingSettings: MavenImportingSettings,
parentImportingActivity: StructuredIdeActivity): MavenProjectImporter {
internal fun createStaticImporter(
project: Project,
projectsTree: MavenProjectsTree,
projectsToImportWithChanges: Map<MavenProject, MavenProjectModifications>,
modelsProvider: IdeModifiableModelsProvider,
importingSettings: MavenImportingSettings,
parentImportingActivity: StructuredIdeActivity,
): MavenProjectImporter {
val importer = StaticWorkspaceProjectImporter(projectsTree, projectsToImportWithChanges,
importingSettings, modelsProvider, project)
return wrapWithFUS(project, parentImportingActivity, importer)
}
@JvmStatic
fun createImporter(project: Project,
projectsTree: MavenProjectsTree,
projectsToImportWithChanges: Map<MavenProject, MavenProjectChangesBase>,
modelsProvider: IdeModifiableModelsProvider,
importingSettings: MavenImportingSettings,
previewModule: Module?,
parentImportingActivity: StructuredIdeActivity): MavenProjectImporter {
internal fun createImporter(
project: Project,
projectsTree: MavenProjectsTree,
projectsToImportWithChanges: Map<MavenProject, MavenProjectModifications>,
modelsProvider: IdeModifiableModelsProvider,
importingSettings: MavenImportingSettings,
previewModule: Module?,
parentImportingActivity: StructuredIdeActivity,
): MavenProjectImporter {
val importer = createImporter(project, projectsTree, projectsToImportWithChanges,
modelsProvider, importingSettings, previewModule)
return wrapWithFUS(project, parentImportingActivity, importer)
@@ -107,12 +109,14 @@ interface MavenProjectImporter {
}
}
private fun createImporter(project: Project,
projectsTree: MavenProjectsTree,
projectsToImportWithChanges: Map<MavenProject, MavenProjectChangesBase>,
modelsProvider: IdeModifiableModelsProvider,
importingSettings: MavenImportingSettings,
previewModule: Module?): MavenProjectImporter {
private fun createImporter(
project: Project,
projectsTree: MavenProjectsTree,
projectsToImportWithChanges: Map<MavenProject, MavenProjectModifications>,
modelsProvider: IdeModifiableModelsProvider,
importingSettings: MavenImportingSettings,
previewModule: Module?,
): MavenProjectImporter {
return WorkspaceProjectImporter(projectsTree, projectsToImportWithChanges, importingSettings, modelsProvider, project)
}
@@ -12,7 +12,10 @@ import com.intellij.openapi.roots.DependencyScope
import com.intellij.openapi.roots.ex.ProjectRootManagerEx
import org.jetbrains.idea.maven.importing.MavenProjectImporterUtil.LegacyExtensionImporter.CountAndTime
import org.jetbrains.idea.maven.model.MavenConstants
import org.jetbrains.idea.maven.project.*
import org.jetbrains.idea.maven.project.MavenProject
import org.jetbrains.idea.maven.project.MavenProjectChanges
import org.jetbrains.idea.maven.project.MavenProjectsProcessorTask
import org.jetbrains.idea.maven.project.MavenProjectsTree
import org.jetbrains.idea.maven.statistics.MavenImportCollector
import org.jetbrains.idea.maven.utils.MavenLog
import org.jetbrains.idea.maven.utils.MavenUtil
@@ -172,12 +175,12 @@ internal object MavenProjectImporterUtil {
module: Module,
moduleType: StandardMavenModuleType,
mavenTree: MavenProjectsTree,
changesBase: MavenProjectChangesBase,
hasChanges: Boolean,
mavenProjectToModuleName: Map<MavenProject, String>,
mavenImporters: List<MavenImporter>): LegacyExtensionImporter? {
if (moduleType === StandardMavenModuleType.COMPOUND_MODULE) return null
var suitableImporters = mavenImporters
val changes = if (changesBase.hasChanges()) MavenProjectChanges.ALL else MavenProjectChanges.NONE
val changes = if (hasChanges) MavenProjectChanges.ALL else MavenProjectChanges.NONE
return if (suitableImporters.isEmpty()) null
else LegacyExtensionImporter(module, mavenTree, mavenProject, changes, mavenProjectToModuleName, suitableImporters)
}
@@ -30,7 +30,7 @@ import org.jetbrains.idea.maven.model.MavenArtifact
import org.jetbrains.idea.maven.model.MavenConstants
import org.jetbrains.idea.maven.model.MavenId
import org.jetbrains.idea.maven.project.MavenProject
import org.jetbrains.idea.maven.project.MavenProjectChangesBase
import org.jetbrains.idea.maven.project.MavenProjectModifications
import org.jetbrains.idea.maven.project.MavenProjectsTree
import org.jetbrains.idea.maven.project.SupportedRequestType
import org.jetbrains.idea.maven.utils.MavenLog
@@ -47,12 +47,12 @@ internal class MavenProjectImportContextProvider(
private val myMavenProjectToModuleName: Map<MavenProject, String>,
) {
fun getAllModules(projectsWithChanges: Map<MavenProject, MavenProjectChangesBase>): List<MavenTreeModuleImportData> {
fun getAllModules(projectsWithChanges: Map<MavenProject, MavenProjectModifications>): List<MavenTreeModuleImportData> {
val importDataContext = getModuleImportDataContext(projectsWithChanges)
return getFlattenModuleDataDependencyContext(importDataContext)
}
private fun getModuleImportDataContext(projectsToImportWithChanges: Map<MavenProject, MavenProjectChangesBase>): ModuleImportDataContext {
private fun getModuleImportDataContext(projectsToImportWithChanges: Map<MavenProject, MavenProjectModifications>): ModuleImportDataContext {
val allModules: MutableList<MavenProjectImportData> = ArrayList<MavenProjectImportData>()
val moduleImportDataByMavenId: MutableMap<MavenId, MavenProjectImportData> = TreeMap<MavenId, MavenProjectImportData>(
Comparator.comparing<MavenId?, String?>(Function { obj: MavenId? -> obj!!.getKey() }))
@@ -308,7 +308,7 @@ internal class MavenProjectImportContextProvider(
private fun getModuleImportDataSingle(
project: MavenProject,
moduleName: String,
changes: MavenProjectChangesBase,
changes: MavenProjectModifications,
languageLevels: LanguageLevels,
): MavenProjectImportData {
val type = if (project.isAggregator) {
@@ -327,7 +327,7 @@ internal class MavenProjectImportContextProvider(
private fun getModuleImportDataCompound(
project: MavenProject,
moduleName: String,
changes: MavenProjectChangesBase,
changes: MavenProjectModifications,
languageLevels: LanguageLevels,
): MavenProjectImportData {
val type = StandardMavenModuleType.COMPOUND_MODULE
@@ -351,7 +351,7 @@ internal class MavenProjectImportContextProvider(
return MavenProjectImportData(project, moduleData, changes, otherModules)
}
private fun getModuleImportData(project: MavenProject, moduleName: String, changes: MavenProjectChangesBase): MavenProjectImportData {
private fun getModuleImportData(project: MavenProject, moduleName: String, changes: MavenProjectModifications): MavenProjectImportData {
val languageLevels = getLanguageLevels(project)
val needCreateCompoundModule = needCreateCompoundModule(project, languageLevels)
@@ -5,7 +5,7 @@ import com.intellij.pom.java.LanguageLevel
import org.jetbrains.idea.maven.importing.StandardMavenModuleType
import org.jetbrains.idea.maven.importing.tree.dependency.MavenImportDependency
import org.jetbrains.idea.maven.project.MavenProject
import org.jetbrains.idea.maven.project.MavenProjectChangesBase
import org.jetbrains.idea.maven.project.MavenProjectModifications
internal class ModuleData(
val moduleName: String,
@@ -48,13 +48,13 @@ internal open class MavenTreeModuleImportData(
mavenProject: MavenProject,
moduleData: ModuleData,
val dependencies: List<MavenImportDependency<*>>,
val changes: MavenProjectChangesBase,
val changes: MavenProjectModifications,
) : MavenModuleImportData(mavenProject, moduleData)
internal class MavenProjectImportData(
val mavenProject: MavenProject,
val moduleData: ModuleData,
val changes: MavenProjectChangesBase,
val changes: MavenProjectModifications,
val otherModules: List<ModuleData>,
) {
@@ -14,7 +14,7 @@ import org.jetbrains.idea.maven.project.*
internal class StaticWorkspaceProjectImporter(
projectsTree: MavenProjectsTree,
projectsToImportWithChanges: Map<MavenProject, MavenProjectChangesBase>,
projectsToImportWithChanges: Map<MavenProject, MavenProjectModifications>,
importingSettings: MavenImportingSettings,
modifiableModelsProvider: IdeModifiableModelsProvider,
project: Project
@@ -43,7 +43,7 @@ internal class StaticWorkspaceProjectImporter(
moduleWithType.module,
moduleWithType.type,
myProjectsTree,
projectWithModules.changes,
projectWithModules.hasChanges,
moduleNameByProject,
importers)
}
@@ -59,7 +59,7 @@ var WORKSPACE_IMPORTER_SKIP_FAST_APPLY_ATTEMPTS_ONCE: Boolean = false
internal open class WorkspaceProjectImporter(
protected val myProjectsTree: MavenProjectsTree,
protected val projectsToImportWithChanges: Map<MavenProject, MavenProjectChangesBase>,
protected val projectsToImportWithChanges: Map<MavenProject, MavenProjectModifications>,
protected val myImportingSettings: MavenImportingSettings,
protected val myModifiableModelsProvider: IdeModifiableModelsProvider,
protected val myProject: Project,
@@ -157,19 +157,19 @@ internal open class WorkspaceProjectImporter(
return migratedToExternalStorage
}
private data class ProjectChangesInfo(val hasChanges: Boolean, val allProjectsToChanges: Map<MavenProject, MavenProjectChangesBase>) {
private data class ProjectChangesInfo(val hasChanges: Boolean, val allProjectsToChanges: Map<MavenProject, MavenProjectModifications>) {
val projectFilePaths: List<String> get() = allProjectsToChanges.keys.map { it.path }
val changedProjectsOnly: Iterable<MavenProject>
get() = allProjectsToChanges
.asSequence()
.filter { (_, changes) -> changes.hasChanges() }
.filter { (_, changes) -> changes == MavenProjectModifications.ALL }
.map { (mavenProject, _) -> mavenProject }
.asIterable()
}
private fun collectProjectChanges(
storageBeforeImport: EntityStorage,
originalProjectsChanges: Map<MavenProject, MavenProjectChangesBase>,
originalProjectsChanges: Map<MavenProject, MavenProjectModifications>,
migratedToExternalStorage: Boolean,
): ProjectChangesInfo {
val mavenProjectsTreeSettingsEntity = storageBeforeImport.entities(MavenProjectsTreeSettingsEntity::class.java).firstOrNull()
@@ -182,17 +182,17 @@ internal open class WorkspaceProjectImporter(
// if it was ignored, module dependencies should be replaced with library dependencies and vice versa
val projectsChanged = !sameProjects(projectFilesFromPreviousImport, allProjects)
val allProjectsToChanges: Map<MavenProject, MavenProjectChangesBase> = allProjects.associateWith {
val allProjectsToChanges: Map<MavenProject, MavenProjectModifications> = allProjects.associateWith {
if (projectsChanged) {
MavenProjectChangesBase.ALL
MavenProjectModifications.ALL
}
else {
val newProjectToImport = it.path !in projectFilesFromPreviousImport
if (newProjectToImport) MavenProjectChangesBase.ALL else originalProjectsChanges.getOrDefault(it, MavenProjectChangesBase.NONE)
if (newProjectToImport) MavenProjectModifications.ALL else originalProjectsChanges.getOrDefault(it, MavenProjectModifications.NONE)
}
}
val hasChanges = allProjectsToChanges.values.any { it.hasChanges() } || migratedToExternalStorage
val hasChanges = allProjectsToChanges.values.any { it == MavenProjectModifications.ALL } || migratedToExternalStorage
return ProjectChangesInfo(hasChanges, allProjectsToChanges)
}
@@ -226,7 +226,7 @@ internal open class WorkspaceProjectImporter(
private fun buildModuleNameMap(
externalSystemModuleEntities: Sequence<ExternalSystemModuleOptionsEntity>,
projectToImport: Map<MavenProject, MavenProjectChangesBase>,
projectToImport: Map<MavenProject, MavenProjectModifications>,
): Map<MavenProject, String> {
return MavenModuleNameMapper.mapModuleNames(myProjectsTree, projectToImport.keys, getExistingModuleNames(externalSystemModuleEntities))
}
@@ -234,7 +234,7 @@ internal open class WorkspaceProjectImporter(
private fun importModules(
storageBeforeImport: EntityStorage,
builder: MutableEntityStorage,
projectsToImport: Map<MavenProject, MavenProjectChangesBase>,
projectsToImport: Map<MavenProject, MavenProjectModifications>,
mavenProjectToModuleName: Map<MavenProject, String>,
contextData: UserDataHolderBase,
stats: WorkspaceImportStats,
@@ -246,7 +246,7 @@ internal open class WorkspaceProjectImporter(
val folderImportingContext = WorkspaceFolderImporter.FolderImportingContext()
class PartialModulesData(
val changes: MavenProjectChangesBase,
val changes: MavenProjectModifications,
val modules: MutableList<ModuleWithTypeData<ModuleEntity>>,
)
@@ -274,7 +274,7 @@ internal open class WorkspaceProjectImporter(
}
val result = projectToModulesData.map { (mavenProject, partialData) ->
MavenProjectWithModulesData(mavenProject, partialData.changes, partialData.modules)
MavenProjectWithModulesData(mavenProject, partialData.changes == MavenProjectModifications.ALL, partialData.modules)
}
tracer.spanBuilder("configureModules").use { configureModules(result, builder, contextData, stats) }
@@ -438,7 +438,7 @@ internal open class WorkspaceProjectImporter(
}
if (appliedModules.isNotEmpty()) {
result.add(MavenProjectWithModulesData(each.mavenProject, each.changes, appliedModules))
result.add(MavenProjectWithModulesData(each.mavenProject, each.hasChanges, appliedModules))
}
}
@@ -534,7 +534,7 @@ internal open class WorkspaceProjectImporter(
moduleWithType.module,
moduleWithType.type,
myProjectsTree,
projectWithModules.changes,
projectWithModules.hasChanges,
moduleNameByProject,
importers)
}
@@ -752,6 +752,6 @@ internal class ModuleWithTypeData<M>(
internal class MavenProjectWithModulesData<M>(
override val mavenProject: MavenProject,
override val changes: MavenProjectChangesBase,
override val hasChanges: Boolean,
override val modules: List<ModuleWithTypeData<M>>,
) : MavenWorkspaceConfigurator.MavenProjectWithModules<M>
@@ -32,9 +32,7 @@ class MavenFolderResolver(private val project: Project) {
}
private suspend fun doResolveFoldersAndImport(projects: Collection<MavenProject>, progressReporter: RawProgressReporter) {
val allProjectsWithChanges = resolveFolders(projects, progressReporter)
val projectsToImportWithChanges = allProjectsWithChanges.filter { !it.key.hasReadingErrors() && it.value.hasChanges() }
resolveFolders(projects, progressReporter)
//actually a fix for https://youtrack.jetbrains.com/issue/IDEA-286455 to be rewritten, see IDEA-294209
MavenUtil.restartMavenConnectors(project, false) { c: MavenServerConnector ->
@@ -44,38 +42,34 @@ class MavenFolderResolver(private val project: Project) {
false
}
if (!projectsToImportWithChanges.isEmpty()) {
projectsManager.importMavenProjects(projectsToImportWithChanges)
}
projectsManager.importMavenProjects(projects)
}
private suspend fun resolveFolders(mavenProjects: Collection<MavenProject>,
progressReporter: RawProgressReporter): Map<MavenProject, MavenProjectChangesBase> {
private suspend fun resolveFolders(mavenProjects: Collection<MavenProject>, progressReporter: RawProgressReporter) {
val console = MavenSourceGenerationConsole(project)
try {
console.start()
val tree = projectsManager.projectsTree
val mavenProjectsToResolve = collectMavenProjectsToResolve(mavenProjects, tree)
val projectMultiMap = MavenUtil.groupByBasedir(mavenProjectsToResolve, tree)
val projectsWithChanges = mutableMapOf<MavenProject, MavenProjectChangesBase>()
for ((baseDir, mavenProjectsForBaseDir) in projectMultiMap.entrySet()) {
console.startSourceGeneration(baseDir)
val chunk = resolveFolders(baseDir, mavenProjectsForBaseDir, tree, progressReporter, console)
projectsWithChanges.putAll(chunk)
resolveFolders(baseDir, mavenProjectsForBaseDir, tree, progressReporter, console)
console.finishSourceGeneration(baseDir)
}
return projectsWithChanges
}
finally {
console.finish()
}
}
private suspend fun resolveFolders(baseDir: String,
mavenProjects: Collection<MavenProject>,
tree: MavenProjectsTree,
progressReporter: RawProgressReporter,
console: MavenSourceGenerationConsole): Map<MavenProject, MavenProjectChangesBase> {
private suspend fun resolveFolders(
baseDir: String,
mavenProjects: Collection<MavenProject>,
tree: MavenProjectsTree,
progressReporter: RawProgressReporter,
console: MavenSourceGenerationConsole,
) {
val goal = projectsManager.importingSettings.updateFoldersOnImportPhase
val fileToProject = mavenProjects.associateBy({ File(it.file.path) }, { it })
@@ -100,16 +94,13 @@ class MavenFolderResolver(private val project: Project) {
projectsManager.embeddersManager.release(embedder)
}
val projectsWithChanges = mutableMapOf<MavenProject, MavenProjectChangesBase>()
for (goalResult in goalResults) {
val mavenProject = fileToProject.getOrDefault(goalResult.file, null)
if (null != mavenProject && MavenUtil.shouldResetDependenciesAndFolders(goalResult.problems)) {
val changes = mavenProject.setFolders(goalResult.folders)
projectsWithChanges[mavenProject] = if (changes.hasChanges()) MavenProjectChangesBase.ALL else MavenProjectChangesBase.NONE
tree.fireFoldersResolved(Pair.create(mavenProject, changes))
}
}
return projectsWithChanges
}
private fun collectMavenProjectsToResolve(mavenProjects: Collection<MavenProject>, tree: MavenProjectsTree): Collection<MavenProject> {
@@ -1,23 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.idea.maven.project
import org.jetbrains.annotations.ApiStatus
@ApiStatus.Internal
interface MavenProjectChangesBase {
@ApiStatus.Internal
object ALL : MavenProjectChangesBase {
override fun hasChanges(): Boolean {
return true
}
}
@ApiStatus.Internal
object NONE : MavenProjectChangesBase {
override fun hasChanges(): Boolean {
return false
}
}
fun hasChanges(): Boolean
}
@@ -0,0 +1,5 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.idea.maven.project
internal enum class MavenProjectModifications { ALL, NONE }
@@ -85,7 +85,7 @@ interface MavenAsyncProjectsManager {
filesToDelete: List<VirtualFile>)
@ApiStatus.Internal
suspend fun importMavenProjects(projectsToImport: Map<MavenProject, MavenProjectChangesBase>)
suspend fun importMavenProjects(projectsToImport: Collection<MavenProject>)
suspend fun downloadArtifacts(projects: Collection<MavenProject>,
artifacts: Collection<MavenArtifact>?,
@@ -120,13 +120,17 @@ open class MavenProjectsManagerEx(project: Project, private val cs: CoroutineSco
return updateAllMavenProjects(MavenSyncSpec.incremental("MavenProjectsManagerEx.addManagedFilesWithProfilesAndUpdate"), modelsProvider)
}
override suspend fun importMavenProjects(projectsToImport: Map<MavenProject, MavenProjectChangesBase>) {
override suspend fun importMavenProjects(projects: Collection<MavenProject>) {
importMavenProjects(projects.associate { it to MavenProjectModifications.ALL })
}
private suspend fun importMavenProjects(projectsToImport: Map<MavenProject, MavenProjectModifications>) {
reapplyModelStructureOnly {
importMavenProjects(projectsToImport, null, it)
}
}
private suspend fun importMavenProjects(projectsToImport: Map<MavenProject, MavenProjectChangesBase>,
private suspend fun importMavenProjects(projectsToImport: Map<MavenProject, MavenProjectModifications>,
modelsProvider: IdeModifiableModelsProvider?,
parentActivity: StructuredIdeActivity): List<Module> {
return tracer.spanBuilder("importMavenProjects").useWithScope {
@@ -137,7 +141,7 @@ open class MavenProjectsManagerEx(project: Project, private val cs: CoroutineSco
}
@RequiresBackgroundThread
private suspend fun doImportMavenProjects(projectsToImport: Map<MavenProject, MavenProjectChangesBase>,
private suspend fun doImportMavenProjects(projectsToImport: Map<MavenProject, MavenProjectModifications>,
optionalModelsProvider: IdeModifiableModelsProvider?,
parentActivity: StructuredIdeActivity): List<Module> {
if (projectsToImport.any { it.key == null }) {
@@ -185,7 +189,7 @@ open class MavenProjectsManagerEx(project: Project, private val cs: CoroutineSco
return importResult.createdModules
}
private fun runImportProjectActivity(projectsToImport: Map<MavenProject, MavenProjectChangesBase>,
private fun runImportProjectActivity(projectsToImport: Map<MavenProject, MavenProjectModifications>,
modelsProvider: IdeModifiableModelsProvider,
parentActivity: StructuredIdeActivity): ImportResult {
val projectImporter = MavenProjectImporter.createImporter(
@@ -214,7 +218,7 @@ open class MavenProjectsManagerEx(project: Project, private val cs: CoroutineSco
private data class ImportResult(val createdModules: List<Module>, val postTasks: List<MavenProjectsProcessorTask>)
private suspend fun importAllProjects() {
val projectsToImport = projectsTree.projects.associateBy({ it }, { MavenProjectChangesBase.ALL })
val projectsToImport = projectsTree.projects.associateBy({ it }, { MavenProjectModifications.ALL })
importMavenProjects(projectsToImport)
}
@@ -438,7 +442,7 @@ open class MavenProjectsManagerEx(project: Project, private val cs: CoroutineSco
val projectsToImport = resolutionResult.mavenProjectMap.entries
.flatMap { it.value }
.associateBy({ it }, { MavenProjectChangesBase.ALL })
.associateBy({ it }, { MavenProjectModifications.ALL })
// plugins and artifacts can be resolved in parallel with import
return coroutineScope {
@@ -75,7 +75,7 @@ class MavenProjectStaticImporter(val project: Project, val coroutineScope: Corou
val mavenProjectMappings = HashMap<MavenProject, List<MavenProject>>()
val allProjects = forest.flatMap { it.projects() }.toList()
visitor.map(allProjects)
val projectChanges = HashMap<MavenProject, MavenProjectChangesBase>()
val projectChanges = HashMap<MavenProject, MavenProjectModifications>()
val existingTree = if (!commit) null else MavenProjectsManager.getInstance(project).let { if (it.isMavenizedProject) it.projectsTree else null }
forest.forEach { tree ->
@@ -83,11 +83,11 @@ class MavenProjectStaticImporter(val project: Project, val coroutineScope: Corou
tree.root?.let(roots::add)
if (existingTree == null || reimportExistingFiles) {
projectChanges.putAll(tree.projects().associateWith { MavenProjectChangesBase.ALL })
projectChanges.putAll(tree.projects().associateWith { MavenProjectModifications.ALL })
}
else {
projectChanges.putAll(
tree.projects().filter { existingTree.findProject(it.file) == null }.associateWith { MavenProjectChangesBase.ALL })
tree.projects().filter { existingTree.findProject(it.file) == null }.associateWith { MavenProjectModifications.ALL })
}
}