[maven] IDEA-330767 legacy import: get rid of explicit module groups

GitOrigin-RevId: 5446b9fe4eb81fcf550081b5d042519e3950a6f0
This commit is contained in:
Dmitry Kichinsky
2023-08-25 16:33:37 +02:00
committed by intellij-monorepo-bot
parent 028444f425
commit 95a73aa62e
13 changed files with 35 additions and 442 deletions

View File

@@ -24,15 +24,14 @@ interface MavenProjectImporter {
fun createImporter(project: Project,
projectsTree: MavenProjectsTree,
projectsToImportWithChanges: Map<MavenProject, MavenProjectChanges>,
importModuleGroupsRequired: Boolean,
modelsProvider: IdeModifiableModelsProvider,
importingSettings: MavenImportingSettings,
previewModule: Module?,
importingActivity: StructuredIdeActivity): MavenProjectImporter {
val importer = createImporter(project, projectsTree, projectsToImportWithChanges,
importModuleGroupsRequired, modelsProvider, importingSettings, previewModule)
modelsProvider, importingSettings, previewModule)
return object : MavenProjectImporter {
override fun importProject(): List<MavenProjectsProcessorTask>? {
override fun importProject(): List<MavenProjectsProcessorTask> {
val activity = MavenImportStats.startApplyingModelsActivity(project, importingActivity)
val startTime = System.currentTimeMillis()
try {
@@ -84,7 +83,6 @@ interface MavenProjectImporter {
private fun createImporter(project: Project,
projectsTree: MavenProjectsTree,
projectsToImportWithChanges: Map<MavenProject, MavenProjectChanges>,
importModuleGroupsRequired: Boolean,
modelsProvider: IdeModifiableModelsProvider,
importingSettings: MavenImportingSettings,
previewModule: Module?): MavenProjectImporter {
@@ -95,7 +93,6 @@ interface MavenProjectImporter {
return MavenProjectLegacyImporter(project, projectsTree,
projectsToImportWithChanges,
importModuleGroupsRequired,
modelsProvider, importingSettings,
previewModule)
}

View File

@@ -23,9 +23,7 @@ import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.platform.workspace.jps.serialization.impl.ModulePath;
import com.intellij.util.ArrayUtil;
import com.intellij.util.ArrayUtilRt;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.Stack;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -45,7 +43,6 @@ public class MavenProjectLegacyImporter extends MavenProjectImporterLegacyBase {
private static final Logger LOG = Logger.getInstance(MavenProjectLegacyImporter.class);
private final Map<VirtualFile, Module> myFileToModuleMapping;
private volatile Set<MavenProject> myAllProjects;
private final boolean myImportModuleGroupsRequired;
private Module myPreviewModule;
@@ -58,13 +55,11 @@ public class MavenProjectLegacyImporter extends MavenProjectImporterLegacyBase {
MavenProjectLegacyImporter(@NotNull Project p,
@NotNull MavenProjectsTree projectsTree,
@NotNull Map<MavenProject, MavenProjectChanges> projectsToImportWithChanges,
boolean importModuleGroupsRequired,
@NotNull IdeModifiableModelsProvider modelsProvider,
@NotNull MavenImportingSettings importingSettings,
@Nullable Module previewModule) {
super(p, projectsTree, importingSettings, projectsToImportWithChanges, modelsProvider);
myFileToModuleMapping = getFileToModuleMapping(p, previewModule, modelsProvider);
myImportModuleGroupsRequired = importModuleGroupsRequired;
myPreviewModule = previewModule;
}
@@ -102,11 +97,6 @@ public class MavenProjectLegacyImporter extends MavenProjectImporterLegacyBase {
createModulesPhase.finished();
}
if (projectsHaveChanges || myImportModuleGroupsRequired) {
hasChanges = true;
configModuleGroups();
}
if (myProject.isDisposed()) return null;
List<Module> obsoleteModules = collectObsoleteModules();
@@ -491,55 +481,6 @@ public class MavenProjectLegacyImporter extends MavenProjectImporterLegacyBase {
false);
}
private void configModuleGroups() {
if (!myImportingSettings.isCreateModuleGroups()) return;
final Stack<String> groups = new Stack<>();
final boolean createTopLevelGroup = myProjectsTree.getRootProjects().size() > 1;
myProjectsTree.visit(new MavenProjectsTree.SimpleVisitor() {
int depth = 0;
@Override
public boolean shouldVisit(MavenProject project) {
// in case some project has been added while we were importing
return myMavenProjectToModuleName.containsKey(project);
}
@Override
public void visit(MavenProject each) {
depth++;
String name = myMavenProjectToModuleName.get(each);
if (shouldCreateGroup(each)) {
groups.push(MavenProjectBundle.message("module.group.name", name));
}
if (!shouldCreateModuleFor(each)) {
return;
}
Module module = myModuleModel.findModuleByName(name);
if (module == null) return;
myModuleModel.setModuleGroupPath(module, groups.isEmpty() ? null : ArrayUtilRt.toStringArray(groups));
}
@Override
public void leave(MavenProject each) {
if (shouldCreateGroup(each)) {
groups.pop();
}
depth--;
}
private boolean shouldCreateGroup(MavenProject project) {
return !myProjectsTree.getModules(project).isEmpty()
&& (createTopLevelGroup || depth > 1);
}
});
}
private boolean removeUnusedProjectLibraries() {
Set<Library> unusedLibraries = new HashSet<>();
Collections.addAll(unusedLibraries, myModelsProvider.getAllLibraries());

View File

@@ -56,7 +56,6 @@ public class MavenImportingSettings implements Cloneable {
private boolean importAutomatically = false;
private boolean createModulesForAggregators = true;
private boolean createModuleGroups = false;
private boolean excludeTargetFolder = true;
private boolean keepSourceFolders = true;
private boolean useMavenOutput = true;
@@ -197,18 +196,6 @@ public class MavenImportingSettings implements Cloneable {
}
}
public boolean isCreateModuleGroups() {
return createModuleGroups;
}
public void setCreateModuleGroups(boolean createModuleGroups) {
boolean changed = this.createModuleGroups != createModuleGroups;
this.createModuleGroups = createModuleGroups;
if (changed) {
fireCreateModuleGroupsChanged();
}
}
public boolean isCreateModulesForAggregators() {
return createModulesForAggregators;
}
@@ -328,7 +315,6 @@ public class MavenImportingSettings implements Cloneable {
MavenImportingSettings that = (MavenImportingSettings)o;
if (useWorkspaceImport != that.useWorkspaceImport) return false;
if (createModuleGroups != that.createModuleGroups) return false;
if (createModulesForAggregators != that.createModulesForAggregators) return false;
if (!dependencyTypes.equals(that.dependencyTypes)) return false;
if (downloadDocsAutomatically != that.downloadDocsAutomatically) return false;
@@ -363,8 +349,6 @@ public class MavenImportingSettings implements Cloneable {
result <<= 1;
if (createModulesForAggregators) result++;
result <<= 1;
if (createModuleGroups) result++;
result <<= 1;
if (keepSourceFolders) result++;
result <<= 1;
if (useMavenOutput) result++;
@@ -408,12 +392,6 @@ public class MavenImportingSettings implements Cloneable {
myListeners.remove(l);
}
private void fireCreateModuleGroupsChanged() {
for (Listener each : myListeners) {
each.createModuleGroupsChanged();
}
}
private void fireCreateModuleForAggregatorsChanged() {
for (Listener each : myListeners) {
each.createModuleForAggregatorsChanged();
@@ -428,8 +406,6 @@ public class MavenImportingSettings implements Cloneable {
public interface Listener {
void createModuleGroupsChanged();
void createModuleForAggregatorsChanged();
void updateAllProjectStructure();

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="org.jetbrains.idea.maven.project.MavenImportingSettingsForm">
<grid id="27dc6" binding="myPanel" layout-manager="GridLayoutManager" row-count="26" column-count="4" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<grid id="27dc6" binding="myPanel" layout-manager="GridLayoutManager" row-count="25" column-count="4" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<xy x="20" y="20" width="895" height="1021"/>
@@ -16,14 +16,6 @@
<text resource-bundle="messages/MavenConfigurableBundle" key="maven.settings.importing.create.modules.for.aggregator"/>
</properties>
</component>
<component id="2b9b5" class="javax.swing.JCheckBox" binding="myCreateGroupsCheckBox" default-binding="true">
<constraints>
<grid row="6" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text resource-bundle="messages/MavenConfigurableBundle" key="maven.settings.importing.create.module.groups"/>
</properties>
</component>
<component id="d7aa1" class="javax.swing.JCheckBox" binding="mySearchRecursivelyCheckBox">
<constraints>
<grid row="0" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
@@ -34,7 +26,7 @@
</component>
<component id="1b499" class="javax.swing.JCheckBox" binding="myUseMavenOutputCheckBox">
<constraints>
<grid row="9" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
<grid row="8" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text resource-bundle="messages/MavenConfigurableBundle" key="maven.settings.importing.use.output.directories"/>
@@ -43,7 +35,7 @@
</component>
<component id="22b1c" class="com.intellij.ui.components.JBLabel">
<constraints>
<grid row="13" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="3" use-parent-layout="false"/>
<grid row="12" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="3" use-parent-layout="false"/>
</constraints>
<properties>
<componentStyle value="SMALL"/>
@@ -54,7 +46,7 @@
<grid id="49dc8" layout-manager="GridLayoutManager" row-count="1" column-count="5" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="10" left="0" bottom="0" right="0"/>
<constraints>
<grid row="15" column="0" row-span="1" col-span="3" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
<grid row="14" column="0" row-span="1" col-span="3" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<focusable value="true"/>
@@ -102,7 +94,7 @@
</grid>
<component id="6d280" class="javax.swing.JCheckBox" binding="myKeepSourceFoldersCheckBox">
<constraints>
<grid row="7" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
<grid row="6" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text resource-bundle="messages/MavenConfigurableBundle" key="maven.settings.importing.keep.folders.on.reimport"/>
@@ -111,7 +103,7 @@
<grid id="d7645" binding="myAdditionalSettingsPanel" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="15" left="0" bottom="0" right="0"/>
<constraints>
<grid row="24" column="0" row-span="1" col-span="3" vsize-policy="3" hsize-policy="3" anchor="8" fill="2" indent="0" use-parent-layout="false"/>
<grid row="23" column="0" row-span="1" col-span="3" vsize-policy="3" hsize-policy="3" anchor="8" fill="2" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
@@ -119,7 +111,7 @@
</grid>
<hspacer id="d45a7">
<constraints>
<grid row="15" column="3" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
<grid row="14" column="3" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
</hspacer>
<grid id="eca06" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
@@ -185,13 +177,13 @@
</grid>
<vspacer id="5d738">
<constraints>
<grid row="25" column="0" row-span="1" col-span="3" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
<grid row="24" column="0" row-span="1" col-span="3" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints>
</vspacer>
<grid id="34bc4" layout-manager="GridLayoutManager" row-count="1" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="12" column="0" row-span="1" col-span="3" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
<grid row="11" column="0" row-span="1" col-span="3" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
@@ -220,7 +212,7 @@
</grid>
<vspacer id="aa40b">
<constraints>
<grid row="11" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false">
<grid row="10" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false">
<preferred-size width="-1" height="10"/>
</grid>
</constraints>
@@ -235,7 +227,7 @@
<grid id="f9c12" layout-manager="GridLayoutManager" row-count="1" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="10" column="0" row-span="1" col-span="3" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
<grid row="9" column="0" row-span="1" col-span="3" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
@@ -263,7 +255,7 @@
</grid>
<component id="af108" class="javax.swing.JCheckBox" binding="myExcludeTargetFolderCheckBox">
<constraints>
<grid row="8" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
<grid row="7" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text resource-bundle="messages/MavenConfigurableBundle" key="maven.settings.importing.project.exclude.build.directory"/>
@@ -272,7 +264,7 @@
</component>
<component id="2e377" class="javax.swing.JLabel">
<constraints>
<grid row="16" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
<grid row="15" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<labelFor value="83bca"/>
@@ -282,7 +274,7 @@
</component>
<component id="83bca" class="javax.swing.JTextField" binding="myDependencyTypes">
<constraints>
<grid row="16" column="1" row-span="1" col-span="2" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
<grid row="15" column="1" row-span="1" col-span="2" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="60" height="-1"/>
</grid>
</constraints>
@@ -293,7 +285,7 @@
</component>
<component id="d634c" class="com.intellij.ui.components.JBLabel">
<constraints>
<grid row="17" column="1" row-span="1" col-span="2" vsize-policy="0" hsize-policy="0" anchor="9" fill="0" indent="0" use-parent-layout="false"/>
<grid row="16" column="1" row-span="1" col-span="2" vsize-policy="0" hsize-policy="0" anchor="9" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<componentStyle value="SMALL"/>
@@ -305,21 +297,21 @@
</component>
<vspacer id="e1c6c">
<constraints>
<grid row="18" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false">
<grid row="17" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false">
<preferred-size width="-1" height="10"/>
</grid>
</constraints>
</vspacer>
<vspacer id="9decb">
<constraints>
<grid row="14" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false">
<grid row="13" column="0" row-span="1" col-span="3" vsize-policy="0" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false">
<preferred-size width="-1" height="10"/>
</grid>
</constraints>
</vspacer>
<component id="eaeb7" class="com.intellij.ui.components.JBLabel">
<constraints>
<grid row="19" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
<grid row="18" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text resource-bundle="messages/MavenConfigurableBundle" key="maven.settings.importing.vm.options"/>
@@ -327,13 +319,13 @@
</component>
<component id="1e30e" class="com.intellij.ui.components.JBTextField" binding="myVMOptionsForImporter">
<constraints>
<grid row="19" column="1" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
<grid row="18" column="1" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
</component>
<component id="30c8a" class="com.intellij.ui.components.JBLabel">
<constraints>
<grid row="21" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
<grid row="20" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text resource-bundle="messages/MavenConfigurableBundle" key="maven.settings.importing.jdk"/>
@@ -341,7 +333,7 @@
</component>
<component id="89c29" class="com.intellij.openapi.externalSystem.service.ui.ExternalSystemJdkComboBox" binding="myJdkForImporterComboBox">
<constraints>
<grid row="21" column="1" row-span="1" col-span="2" vsize-policy="2" hsize-policy="2" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
<grid row="20" column="1" row-span="1" col-span="2" vsize-policy="2" hsize-policy="2" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<model/>
@@ -358,7 +350,7 @@
</component>
<component id="6f594" class="com.intellij.ui.components.JBLabel">
<constraints>
<grid row="20" column="1" row-span="1" col-span="2" vsize-policy="0" hsize-policy="0" anchor="9" fill="0" indent="0" use-parent-layout="false"/>
<grid row="19" column="1" row-span="1" col-span="2" vsize-policy="0" hsize-policy="0" anchor="9" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<componentStyle value="SMALL"/>
@@ -370,7 +362,7 @@
</component>
<component id="3ba5a" class="com.intellij.ui.components.JBLabel" binding="myImporterJdkWarning">
<constraints>
<grid row="23" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="9" fill="0" indent="0" use-parent-layout="false"/>
<grid row="22" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="9" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<componentStyle value="SMALL"/>

View File

@@ -40,7 +40,6 @@ public class MavenImportingSettingsForm {
private TextFieldWithBrowseButton mySeparateModulesDirChooser;
private JCheckBox myCreateModulesForAggregators;
private JCheckBox myCreateGroupsCheckBox;
private JComboBox<String> myUpdateFoldersOnImportPhaseComboBox;
private JCheckBox myKeepSourceFoldersCheckBox;
private JCheckBox myUseMavenOutputCheckBox;
@@ -116,7 +115,6 @@ public class MavenImportingSettingsForm {
myKeepSourceFoldersCheckBox.setVisible(!isWorkspaceImport);
myCreateModulesForAggregators.setVisible(!isWorkspaceImport);
myCreateGroupsCheckBox.setVisible(!isWorkspaceImport);
}
private void updateModuleDirControls() {
@@ -144,7 +142,6 @@ public class MavenImportingSettingsForm {
data.setDedicatedModuleDir(mySeparateModulesDirCheckBox.isSelected() ? mySeparateModulesDirChooser.getText() : "");
data.setCreateModulesForAggregators(myCreateModulesForAggregators.isSelected());
data.setCreateModuleGroups(myCreateGroupsCheckBox.isSelected());
data.setKeepSourceFolders(myKeepSourceFoldersCheckBox.isSelected());
data.setExcludeTargetFolder(myExcludeTargetFolderCheckBox.isSelected());
@@ -173,7 +170,6 @@ public class MavenImportingSettingsForm {
mySeparateModulesDirChooser.setText(data.getDedicatedModuleDir());
myCreateModulesForAggregators.setSelected(data.isCreateModulesForAggregators());
myCreateGroupsCheckBox.setSelected(data.isCreateModuleGroups());
myKeepSourceFoldersCheckBox.setSelected(data.isKeepSourceFolders());
myStoreProjectFilesUnderProjectRoot.setSelected(!isCurrentlyStoredExternally(project));

View File

@@ -84,36 +84,33 @@ open class MavenProjectsManagerEx(project: Project) : MavenProjectsManager(proje
private suspend fun importMavenProjects(projectsToImport: Map<MavenProject, MavenProjectChanges>,
modelsProvider: IdeModifiableModelsProvider?): List<Module> {
val createdModules = doImportMavenProjects(projectsToImport, false, modelsProvider)
val createdModules = doImportMavenProjects(projectsToImport, modelsProvider)
fireProjectImportCompleted()
return createdModules
}
override fun importMavenProjectsSync() {
prepareImporter(null, emptyMap(), false).importMavenProjectsBlocking()
prepareImporter(null, emptyMap()).importMavenProjectsBlocking()
}
private suspend fun doImportMavenProjects(projectsToImport: Map<MavenProject, MavenProjectChanges>,
importModuleGroupsRequired: Boolean,
modelsProvider: IdeModifiableModelsProvider?): List<Module> {
return prepareImporter(modelsProvider, projectsToImport, importModuleGroupsRequired).importMavenProjects()
return prepareImporter(modelsProvider, projectsToImport).importMavenProjects()
}
private fun prepareImporter(modelsProvider: IdeModifiableModelsProvider?,
projectsToImport: Map<MavenProject, MavenProjectChanges>,
importModuleGroupsRequired: Boolean): MavenProjectsManagerImporter {
projectsToImport: Map<MavenProject, MavenProjectChanges>): MavenProjectsManagerImporter {
if (projectsToImport.any { it.key == null }) {
throw IllegalArgumentException("Null key in projectsToImport")
}
val finalModelsProvider = modelsProvider ?: ProjectDataManager.getInstance().createModifiableModelsProvider(myProject)
return MavenProjectsManagerImporter(finalModelsProvider, projectsToImport, importModuleGroupsRequired)
return MavenProjectsManagerImporter(finalModelsProvider, projectsToImport)
}
private data class ImportResult(val createdModules: List<Module>, val postTasks: List<MavenProjectsProcessorTask>)
private inner class MavenProjectsManagerImporter(private val modelsProvider: IdeModifiableModelsProvider,
private val projectsToImport: Map<MavenProject, MavenProjectChanges>,
private val importModuleGroupsRequired: Boolean) {
private val projectsToImport: Map<MavenProject, MavenProjectChanges>) {
@RequiresBlockingContext
fun importMavenProjectsBlocking(): List<Module> {
return runBlockingMaybeCancellable { importMavenProjectsBg() }
@@ -167,7 +164,7 @@ open class MavenProjectsManagerEx(project: Project) : MavenProjectsManager(proje
}
try {
val projectImporter = MavenProjectImporter.createImporter(
project, projectsTree, projectsToImport, importModuleGroupsRequired,
project, projectsTree, projectsToImport,
modelsProvider, importingSettings, myPreviewModule, activity
)
val postTasks = projectImporter.importProject()
@@ -181,15 +178,9 @@ open class MavenProjectsManagerEx(project: Project) : MavenProjectsManager(proje
override fun listenForSettingsChanges() {
importingSettings.addListener(object : MavenImportingSettings.Listener {
override fun createModuleGroupsChanged() {
performInBackground {
importSettings(true)
}
}
override fun createModuleForAggregatorsChanged() {
performInBackground {
importSettings(false)
doImportMavenProjects(emptyMap(), null)
}
}
@@ -201,10 +192,6 @@ open class MavenProjectsManagerEx(project: Project) : MavenProjectsManager(proje
})
}
private suspend fun importSettings(importModuleGroupsRequired: Boolean) {
doImportMavenProjects(emptyMap(), importModuleGroupsRequired, null)
}
private suspend fun importAllProjects() {
val projectsToImport = projectsTree.projects.associateBy({ it }, { MavenProjectChanges.ALL })
importMavenProjects(projectsToImport)

View File

@@ -307,7 +307,6 @@ class MavenImportFlow {
context.projectsToImport.map {
it to MavenProjectChanges.ALL
}.toMap(),
context.initialContext.importingSettings.isCreateModuleGroups,
modelsProvider, context.initialContext.importingSettings,
context.initialContext.previewModule, importingActivity)
val postImportTasks = projectImporter.importProject()

View File

@@ -68,7 +68,6 @@ class MavenSettingsCollector : ProjectUsagesCollector() {
usages.add(IS_DIRECTORY_BASED_PROJECT.metric(project.isDirectoryBased))
usages.add(AUTO_DETECT_COMPILER.metric(importingSettings.isAutoDetectCompiler))
usages.add(CREATE_MODULES_FOR_AGGREGATORS.metric(importingSettings.isCreateModulesForAggregators))
usages.add(CREATE_MODULE_GROUPS.metric(importingSettings.isCreateModuleGroups))
usages.add(KEEP_SOURCE_FOLDERS.metric(importingSettings.isKeepSourceFolders))
usages.add(EXCLUDE_TARGET_FOLDER.metric(importingSettings.isExcludeTargetFolder))
usages.add(USE_MAVEN_OUTPUT.metric(importingSettings.isUseMavenOutput))
@@ -103,7 +102,7 @@ class MavenSettingsCollector : ProjectUsagesCollector() {
}
companion object {
private val GROUP = EventLogGroup("build.maven.state", 8)
private val GROUP = EventLogGroup("build.maven.state", 9)
private val HAS_MAVEN_PROJECT = GROUP.registerEvent("hasMavenProject", EventFields.Enabled)
private val ALWAYS_UPDATE_SNAPSHOTS = GROUP.registerEvent("alwaysUpdateSnapshots", EventFields.Enabled)
private val NON_RECURSIVE = GROUP.registerEvent("nonRecursive", EventFields.Enabled)
@@ -119,7 +118,6 @@ class MavenSettingsCollector : ProjectUsagesCollector() {
private val IS_DIRECTORY_BASED_PROJECT = GROUP.registerEvent("useDirectoryBasedProject", EventFields.Enabled)
private val AUTO_DETECT_COMPILER = GROUP.registerEvent("autoDetectCompiler", EventFields.Enabled)
private val CREATE_MODULES_FOR_AGGREGATORS = GROUP.registerEvent("createModulesForAggregators", EventFields.Enabled)
private val CREATE_MODULE_GROUPS = GROUP.registerEvent("createModuleGroups", EventFields.Enabled)
private val KEEP_SOURCE_FOLDERS = GROUP.registerEvent("keepSourceFolders", EventFields.Enabled)
private val EXCLUDE_TARGET_FOLDER = GROUP.registerEvent("excludeTargetFolder", EventFields.Enabled)
private val USE_MAVEN_OUTPUT = GROUP.registerEvent("useMavenOutput", EventFields.Enabled)

View File

@@ -33,7 +33,6 @@ maven.settings.general.thread.count.note=-T option
maven.settings.importing.workspace.import=Enable fast import
maven.settings.importing.create.modules.for.aggregator=Create $FULLNAME$ &modules for aggregator projects (with 'pom' packaging)
maven.settings.importing.create.module.groups=Create module &groups for multi-module Maven projects
maven.settings.importing.search.recursively=&Search for projects recursively
maven.settings.importing.use.output.directories=Use Maven &output directories
maven.settings.importing.use.output.directories.tooltip=IDEA compiler will use output directory defined in maven model (target/classes by default)

View File

@@ -3,11 +3,7 @@ package org.jetbrains.idea.maven.importing;
import com.intellij.compiler.CompilerConfiguration;
import com.intellij.maven.testFramework.MavenMultiVersionImportingTestCase;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.module.LanguageLevelUtil;
import com.intellij.openapi.module.ModifiableModuleModel;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.roots.ModuleOrderEntry;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.impl.OrderEntryUtil;
@@ -51,21 +47,6 @@ public class ReimportingTest extends MavenMultiVersionImportingTestCase {
importProject();
}
@Test
public void testKeepingModuleGroups() {
final Module m = getModule("project");
WriteCommandAction.writeCommandAction(myProject).run(() -> {
ModifiableModuleModel model = ModuleManager.getInstance(myProject).getModifiableModel();
model.setModuleGroupPath(m, new String[]{"group"});
model.commit();
});
importProject();
assertModuleGroupPath("project", true, "group");
}
@Test
public void testAddingNewModule() {
createProjectPom("""

View File

@@ -686,268 +686,6 @@ public class StructureImportingTest extends MavenMultiVersionImportingTestCase {
assertTrue(new File(parentDir, "asm-parent-3.0.pom").exists());
}
@Test
public void testCreatingModuleGroups() {
VirtualFile p1 = createModulePom("project1",
"""
<groupId>test</groupId>
<artifactId>project1</artifactId>
<version>1</version>
<packaging>pom</packaging>
<modules>
<module>m1</module>
</modules>
""");
createModulePom("project1/m1",
"""
<groupId>test</groupId>
<artifactId>m1</artifactId>
<version>1</version>
""");
VirtualFile p2 = createModulePom("project2",
"""
<groupId>test</groupId>
<artifactId>project2</artifactId>
<version>1</version>
<packaging>pom</packaging>
<modules>
<module>m2</module>
</modules>
""");
createModulePom("project2/m2",
"""
<groupId>test</groupId>
<artifactId>m2</artifactId>
<version>1</version>
<packaging>pom</packaging>
<modules>
<module>m3</module>
</modules>
""");
createModulePom("project2/m2/m3",
"""
<groupId>test</groupId>
<artifactId>m3</artifactId>
<version>1</version>
""");
getMavenImporterSettings().setCreateModuleGroups(true);
importProjects(p1, p2);
assertModules("project1", "project2", "m1", "m2", "m3");
assertModuleGroupPath("project1", "project1 and modules");
assertModuleGroupPath("m1", "project1 and modules");
assertModuleGroupPath("project2", "project2 and modules");
assertModuleGroupPath("m2", "project2 and modules", "m2 and modules");
assertModuleGroupPath("m3", "project2 and modules", "m2 and modules");
}
@Test
public void testDoesNotCreateUnnecessaryTopLevelModuleGroup() {
createProjectPom("""
<groupId>test</groupId>
<artifactId>project</artifactId>
<version>1</version>
<packaging>pom</packaging>
<modules>
<module>m1</module>
</modules>
""");
createModulePom("m1",
"""
<groupId>test</groupId>
<artifactId>m1</artifactId>
<version>1</version>
<packaging>pom</packaging>
<modules>
<module>m2</module>
</modules>
""");
createModulePom("m1/m2",
"""
<groupId>test</groupId>
<artifactId>m2</artifactId>
<version>1</version>
""");
getMavenImporterSettings().setCreateModuleGroups(true);
importProject();
assertModules("project", "m1", "m2");
assertModuleGroupPath("project");
assertModuleGroupPath("m1", "m1 and modules");
assertModuleGroupPath("m2", "m1 and modules");
}
@Test
public void testModuleGroupsWhenNotCreatingModulesForAggregatorProjects() {
if (!supportsCreateAggregatorOption() || !supportModuleGroups()) return;
createProjectPom("""
<groupId>test</groupId>
<artifactId>project</artifactId>
<version>1</version>
<packaging>pom</packaging>
<modules>
<module>module1</module>
</modules>
""");
createModulePom("module1",
"""
<groupId>test</groupId>
<artifactId>module1</artifactId>
<version>1</version>
<packaging>pom</packaging>
<modules>
<module>module2</module>
</modules>
""");
createModulePom("module1/module2",
"""
<groupId>test</groupId>
<artifactId>module2</artifactId>
<version>1</version>
""");
getMavenImporterSettings().setCreateModuleGroups(true);
getMavenImporterSettings().setCreateModulesForAggregators(false);
importProject();
assertModules("module2");
assertModuleGroupPath("module2", "module1 and modules");
}
@Test
public void testReimportingProjectWhenCreatingModuleGroupsSettingChanged() {
createProjectPom("""
<groupId>test</groupId>
<artifactId>project</artifactId>
<version>1</version>
<packaging>pom</packaging>
<modules>
<module>module1</module>
</modules>
""");
createModulePom("module1",
"""
<groupId>test</groupId>
<artifactId>module1</artifactId>
<version>1</version>
<packaging>pom</packaging>
<modules>
<module>module2</module>
</modules>
""");
createModulePom("module1/module2",
"""
<groupId>test</groupId>
<artifactId>module2</artifactId>
<version>1</version>
""");
importProject();
assertModules("project", "module1", "module2");
assertModuleGroupPath("module2");
getMavenImporterSettings().setCreateModuleGroups(true);
if (isNewImportingProcess) {
importViaNewFlow(Collections.singletonList(myProjectPom), true, Collections.emptyList());
}
else {
//myProjectsManager.performScheduledImportInTests();
}
assertModuleGroupPath("module2", "module1 and modules");
}
@Test
public void testModuleGroupsWhenProjectWithDuplicateNameEmerges() {
VirtualFile p1 = createModulePom("project1",
"""
<groupId>test</groupId>
<artifactId>project1</artifactId>
<version>1</version>
<packaging>pom</packaging>
<modules>
<module>m1</module>
</modules>
""");
createModulePom("project1/m1",
"""
<groupId>test</groupId>
<artifactId>module</artifactId>
<version>1</version>
""");
VirtualFile p2 = createModulePom("project2",
"""
<groupId>test</groupId>
<artifactId>project2</artifactId>
<version>1</version>
<packaging>pom</packaging>
""");
//createModulePom("m2",
// "<groupId>test</groupId>\n" +
// "<artifactId>m2</artifactId>\n" +
// "<version>1</version>\n" +
// "<packaging>pom</packaging>");
getMavenImporterSettings().setCreateModuleGroups(true);
importProjects(p1, p2);
assertModules("project1", "project2", "module");
if (supportModuleGroups()) {
assertModuleGroupPath("project1", "project1 and modules");
assertModuleGroupPath("module", "project1 and modules");
}
p2 = createModulePom("project2",
"""
<groupId>test</groupId>
<artifactId>project2</artifactId>
<version>1</version>
<packaging>pom</packaging>
<modules>
<module>m2</module>
</modules>
""");
createModulePom("project2/m2",
"""
<groupId>test</groupId>
<artifactId>module</artifactId>
<version>1</version>
""");
updateProjectsAndImport(p2); // should not fail to map module names.
if (supportsKeepingModulesFromPreviousImport()) {
assertModules("project1", "project2", "module", "module (1)");
}
else {
assertModules("project1", "project2", "module (1)", "module (2)");
}
if (supportModuleGroups()) {
assertModuleGroupPath("project1", "project1 and modules");
assertModuleGroupPath("module", "project1 and modules");
assertModuleGroupPath("project2", "project2 and modules");
assertModuleGroupPath("module (1)", "project2 and modules");
}
}
@Test
public void testReleaseCompilerPropertyInPerSourceTypeModules() {
assumeTrue(isWorkspaceImport());
@@ -1281,7 +1019,7 @@ public class StructureImportingTest extends MavenMultiVersionImportingTestCase {
}
@Test
public void testProjectWithActiveProfilesAndInnactiveFromSettingsXml() throws IOException {
public void testProjectWithActiveProfilesAndInactiveFromSettingsXml() throws IOException {
updateSettingsXml("""
<activeProfiles>
<activeProfile>one</activeProfile>

View File

@@ -57,10 +57,6 @@ public class MavenSettingsTest extends MavenTestCase {
MavenImportingSettings s = new MavenImportingSettings();
s.addListener(new MavenImportingSettings.Listener() {
@Override
public void createModuleGroupsChanged() {
}
@Override
public void createModuleForAggregatorsChanged() {
log[0] += "changed ";

View File

@@ -33658,13 +33658,6 @@
<option name="pom" hit="Create IntelliJ IDEA modules for aggregator projects (with 'pom' packaging)" />
<option name="projects" hit="Create IntelliJ IDEA modules for aggregator projects (with 'pom' packaging)" />
<option name="with" hit="Create IntelliJ IDEA modules for aggregator projects (with 'pom' packaging)" />
<option name="create" hit="Create module groups for multi-module Maven projects" />
<option name="for" hit="Create module groups for multi-module Maven projects" />
<option name="groups" hit="Create module groups for multi-module Maven projects" />
<option name="maven" hit="Create module groups for multi-module Maven projects" />
<option name="module" hit="Create module groups for multi-module Maven projects" />
<option name="multi-module" hit="Create module groups for multi-module Maven projects" />
<option name="projects" hit="Create module groups for multi-module Maven projects" />
<option name="application" hit="Create run configuration for Spring Boot application" />
<option name="boot" hit="Create run configuration for Spring Boot application" />
<option name="configuration" hit="Create run configuration for Spring Boot application" />