From 6c2b2519a620a5c047bdb0ca3ef26c35821317ac Mon Sep 17 00:00:00 2001 From: Nikita Skvortsov Date: Thu, 29 Nov 2018 16:49:55 +0300 Subject: [PATCH] [gradle] align Module grouping with Gradle projects hierarchy IDEA-202466 Using explicit module groups --- .../BaseGradleProjectResolverExtension.java | 18 ++++++++++++---- .../importing/GradleFoldersImportingTest.java | 21 +++++++++++++++++++ 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java index f890f73abd91..bbeb8300faf5 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java @@ -146,10 +146,8 @@ public class BaseGradleProjectResolverExtension implements GradleProjectResolver if (resolverCtx.isResolveModulePerSourceSet() && externalProject != null) { String[] moduleGroup = null; if (!resolverCtx.isUseQualifiedModuleNames()) { - String gradlePath = gradleModule.getGradleProject().getPath(); - final boolean isRootModule = StringUtil.isEmpty(gradlePath) || ":".equals(gradlePath); - moduleGroup = isRootModule ? new String[]{mainModuleData.getInternalName()} : ArrayUtil.remove(gradlePath.split(":"), 0); - mainModuleData.setIdeModuleGroup(isRootModule ? null : moduleGroup); + moduleGroup = getIdeModuleGroup(mainModuleData.getInternalName(), gradleModule); + mainModuleData.setIdeModuleGroup(moduleGroup); } for (ExternalSourceSet sourceSet : externalProject.getSourceSets().values()) { @@ -229,6 +227,18 @@ public class BaseGradleProjectResolverExtension implements GradleProjectResolver return mainModuleNode; } + @NotNull + protected String[] getIdeModuleGroup(String moduleName, IdeaModule gradleModule) { + String[] moduleGroup; + final String gradlePath = gradleModule.getGradleProject().getPath(); + final String rootName = gradleModule.getProject().getName(); + final boolean isRootModule = StringUtil.isEmpty(gradlePath) || ":".equals(gradlePath); + moduleGroup = isRootModule + ? new String[]{ moduleName } + : (rootName + gradlePath).split(":"); + return moduleGroup; + } + @Nullable private static String getJdkName(@NotNull IdeaModule gradleModule) { try { diff --git a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleFoldersImportingTest.java b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleFoldersImportingTest.java index d7e462664d98..3f58f91f24ed 100644 --- a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleFoldersImportingTest.java +++ b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleFoldersImportingTest.java @@ -369,6 +369,9 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { \--- project1 | \--- project2 \--- project3 + \--- src + \--- main + \--- test */ createProjectSubFile("settings.gradle" , "include (':project1', ':project1:project2', ':project1:project3')\n" + @@ -397,6 +400,24 @@ public class GradleFoldersImportingTest extends GradleImportingTestCase { "rootName.project1.project3.test"); assertContentRoots("rootName.project1.project3", FileUtil.toSystemIndependentName(new File(getProjectPath(), "project3").getAbsolutePath())); + + getCurrentExternalProjectSettings().setUseQualifiedModuleNames(false); + + importProject(); + assertModules("rootName", + "project1", + "project2", + "project3", + "project3_main", + "project3_test"); + + assertContentRoots("project3", + FileUtil.toSystemIndependentName(new File(getProjectPath(), "project3").getAbsolutePath())); + + assertModuleGroupPath("rootName", "rootName"); + assertModuleGroupPath("project1", "rootName", "project1"); + assertModuleGroupPath("project2", "rootName", "project1", "project2"); + assertModuleGroupPath("project3", "rootName", "project1", "project3"); } protected void assertDefaultGradleJavaProjectFolders(@NotNull String mainModuleName) {