gradle: fix module groups configuration
authorVladislav.Soroka <Vladislav.Soroka@jetbrains.com>
Tue, 8 Dec 2015 14:29:33 +0000 (17:29 +0300)
committerVladislav.Soroka <Vladislav.Soroka@jetbrains.com>
Tue, 8 Dec 2015 14:33:57 +0000 (17:33 +0300)
platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/AbstractModuleDataService.java
plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java

index c63b86c46f4f98fd2de6c41e326280b5b065dee4..21e6325651a6d00fbb2b086a1189665d57ea6f41 100644 (file)
@@ -95,11 +95,14 @@ public abstract class AbstractModuleDataService<E extends ModuleData> extends Ab
 
         final ModifiableModuleModel modifiableModel = modelsProvider.getModifiableModuleModel();
         final String[] groupPath;
-        if (isOneToOneMapping || node.getData().getIdeModuleGroup() == null || projectData == null) {
+        if (isOneToOneMapping || projectData == null) {
           groupPath = node.getData().getIdeModuleGroup();
         }
         else {
-          groupPath = ArrayUtil.prepend(projectData.getInternalName() + " modules", node.getData().getIdeModuleGroup());
+          final String externalProjectGroup = projectData.getInternalName() + " modules";
+          groupPath = node.getData().getIdeModuleGroup() == null
+                      ? new String[]{externalProjectGroup}
+                      : ArrayUtil.prepend(externalProjectGroup, node.getData().getIdeModuleGroup());
         }
         modifiableModel.setModuleGroupPath(module, groupPath);
         ModifiableRootModel modifiableRootModel = modelsProvider.getModifiableRootModel(module);
index 4755463f1c8a4cbb6edfba9ff7f085d14a15b107..eb71ef36f31cb2c3d002bcbff3c10ad3f4a19520 100644 (file)
@@ -164,9 +164,16 @@ public class BaseGradleProjectResolverExtension implements GradleProjectResolver
 
     ExternalProject externalProject = resolverCtx.getExtraProject(gradleModule, ExternalProject.class);
     if (externalProject != null) {
-      final String[] moduleGroup =
-        externalProject.getSourceSets().isEmpty() ? null : new String[]{mainModuleData.getInternalName() + " modules"};
-      mainModuleData.setIdeModuleGroup(moduleGroup);
+      String gradlePath = gradleModule.getGradleProject().getPath();
+      final boolean isRootModule = StringUtil.isEmpty(gradlePath) || ":".equals(gradlePath);
+      final String[] moduleGroup;
+      if (isRootModule) {
+        moduleGroup = new String[]{mainModuleData.getInternalName()};
+      }
+      else {
+        moduleGroup = ArrayUtil.remove(gradlePath.split(":"), 0);
+      }
+      mainModuleData.setIdeModuleGroup(isRootModule ? null : moduleGroup);
 
       for (ExternalSourceSet sourceSet : externalProject.getSourceSets().values()) {
         final String moduleId = getModuleId(externalProject, sourceSet);