mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[maven] IDEA-255308 introduce MavenProjectModifications
GitOrigin-RevId: 3acaacc9d422264e4e05143dff6a407b2a62ae44
This commit is contained in:
committed by
intellij-monorepo-bot
parent
6ff922839e
commit
f8813bbf83
+2
-2
@@ -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)
|
||||
|
||||
+2
-3
@@ -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
|
||||
}
|
||||
|
||||
|
||||
|
||||
+25
-21
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
+6
-3
@@ -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)
|
||||
}
|
||||
|
||||
+6
-6
@@ -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)
|
||||
|
||||
+3
-3
@@ -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>,
|
||||
) {
|
||||
|
||||
|
||||
+2
-2
@@ -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)
|
||||
}
|
||||
|
||||
+15
-15
@@ -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>
|
||||
|
||||
+11
-20
@@ -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> {
|
||||
|
||||
-23
@@ -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
|
||||
}
|
||||
+5
@@ -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 }
|
||||
|
||||
+11
-7
@@ -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 {
|
||||
|
||||
+3
-3
@@ -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 })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user