[gradle] align Module grouping with Gradle projects hierarchy IDEA-202466

Using explicit module groups
This commit is contained in:
Nikita Skvortsov
2018-12-06 13:03:03 +03:00
parent d1873a95e7
commit 6c2b2519a6
2 changed files with 35 additions and 4 deletions
@@ -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 {
@@ -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) {