mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
gradle: support qualified module names
This commit is contained in:
+5
-3
@@ -17,6 +17,7 @@ package com.intellij.openapi.externalSystem.service.project;
|
||||
|
||||
import com.intellij.openapi.externalSystem.model.project.*;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleGrouperKt;
|
||||
import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.module.ModuleUtilCore;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -87,16 +88,17 @@ public class IdeModelsProviderImpl implements IdeModelsProvider {
|
||||
protected String[] suggestModuleNameCandidates(@NotNull ModuleData module) {
|
||||
String prefix = module.getGroup();
|
||||
File modulePath = new File(module.getLinkedExternalProjectPath());
|
||||
if(modulePath.isFile()) {
|
||||
if (modulePath.isFile()) {
|
||||
modulePath = modulePath.getParentFile();
|
||||
}
|
||||
if (modulePath.getParentFile() != null) {
|
||||
prefix = modulePath.getParentFile().getName();
|
||||
}
|
||||
char delimiter = ModuleGrouperKt.isQualifiedModuleNamesEnabled() ? '.' : '_';
|
||||
return new String[]{
|
||||
module.getInternalName(),
|
||||
prefix + '-' + module.getInternalName(),
|
||||
prefix + '-' + module.getInternalName() + "~1"};
|
||||
prefix + delimiter + module.getInternalName(),
|
||||
prefix + delimiter + module.getInternalName() + "~1"};
|
||||
}
|
||||
|
||||
private static boolean isApplicableIdeModule(@NotNull ModuleData moduleData, @NotNull Module ideModule) {
|
||||
|
||||
+9
-20
@@ -34,10 +34,7 @@ import com.intellij.openapi.externalSystem.service.notification.NotificationData
|
||||
import com.intellij.openapi.externalSystem.service.notification.NotificationSource;
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil;
|
||||
import com.intellij.openapi.externalSystem.util.Order;
|
||||
import com.intellij.openapi.module.EmptyModuleType;
|
||||
import com.intellij.openapi.module.JavaModuleType;
|
||||
import com.intellij.openapi.module.ModuleType;
|
||||
import com.intellij.openapi.module.StdModuleTypes;
|
||||
import com.intellij.openapi.module.*;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.DependencyScope;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
@@ -175,21 +172,18 @@ public class BaseGradleProjectResolverExtension implements GradleProjectResolver
|
||||
|
||||
ExternalProject externalProject = resolverCtx.getExtraProject(gradleModule, ExternalProject.class);
|
||||
if (resolverCtx.isResolveModulePerSourceSet() && externalProject != null) {
|
||||
String gradlePath = gradleModule.getGradleProject().getPath();
|
||||
final boolean isRootModule = StringUtil.isEmpty(gradlePath) || ":".equals(gradlePath);
|
||||
final String[] moduleGroup;
|
||||
if (isRootModule) {
|
||||
moduleGroup = new String[]{mainModuleData.getInternalName()};
|
||||
String[] moduleGroup = null;
|
||||
if (!ModuleGrouperKt.isQualifiedModuleNamesEnabled()) {
|
||||
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);
|
||||
}
|
||||
else {
|
||||
moduleGroup = ArrayUtil.remove(gradlePath.split(":"), 0);
|
||||
}
|
||||
mainModuleData.setIdeModuleGroup(isRootModule ? null : moduleGroup);
|
||||
|
||||
for (ExternalSourceSet sourceSet : externalProject.getSourceSets().values()) {
|
||||
final String moduleId = getModuleId(resolverCtx, gradleModule, sourceSet);
|
||||
final String moduleExternalName = gradleModule.getName() + ":" + sourceSet.getName();
|
||||
final String moduleInternalName = getInternalModuleName(gradleModule, sourceSet.getName());
|
||||
final String moduleInternalName = getInternalModuleName(gradleModule, externalProject, sourceSet.getName());
|
||||
|
||||
GradleSourceSetData sourceSetData = new GradleSourceSetData(
|
||||
moduleId, moduleExternalName, moduleInternalName, mainModuleFileDirectoryPath, mainModuleConfigPath);
|
||||
@@ -218,7 +212,7 @@ public class BaseGradleProjectResolverExtension implements GradleProjectResolver
|
||||
}
|
||||
else {
|
||||
if ("test".equals(sourceSet.getName())) {
|
||||
sourceSetData.setProductionModuleId(getInternalModuleName(gradleModule, "main"));
|
||||
sourceSetData.setProductionModuleId(getInternalModuleName(gradleModule, externalProject, "main"));
|
||||
final Set<File> testsArtifacts = externalProject.getArtifactsByConfiguration().get("tests");
|
||||
if (testsArtifacts != null) {
|
||||
artifacts.addAll(testsArtifacts);
|
||||
@@ -260,11 +254,6 @@ public class BaseGradleProjectResolverExtension implements GradleProjectResolver
|
||||
return mainModuleNode;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static String getInternalModuleName(@NotNull IdeaModule gradleModule, @NotNull String sourceSetName) {
|
||||
return PathUtilRt.suggestFileName(gradleModule.getName() + "_" + sourceSetName, true, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void populateModuleExtraModels(@NotNull IdeaModule gradleModule, @NotNull DataNode<ModuleData> ideModule) {
|
||||
final BuildScriptClasspathModel buildScriptClasspathModel = resolverCtx.getExtraProject(gradleModule, BuildScriptClasspathModel.class);
|
||||
|
||||
+10
-8
@@ -29,6 +29,7 @@ import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotifica
|
||||
import com.intellij.openapi.externalSystem.service.project.ExternalSystemProjectResolver;
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil;
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemDebugEnvironment;
|
||||
import com.intellij.openapi.module.ModuleGrouperKt;
|
||||
import com.intellij.openapi.module.StdModuleTypes;
|
||||
import com.intellij.openapi.roots.DependencyScope;
|
||||
import com.intellij.openapi.util.Factory;
|
||||
@@ -866,15 +867,16 @@ public class GradleProjectResolver implements ExternalSystemProjectResolver<Grad
|
||||
if (paths.contains(moduleNode.getData().getLinkedExternalProjectPath())) continue;
|
||||
|
||||
resultProjectDataNode.addChild(moduleNode);
|
||||
if (!ModuleGrouperKt.isQualifiedModuleNamesEnabled()) {
|
||||
// adjust ide module group
|
||||
final ModuleData moduleData = moduleNode.getData();
|
||||
if (moduleData.getIdeModuleGroup() != null) {
|
||||
String[] moduleGroup = ArrayUtil.prepend(resultProjectDataNode.getData().getInternalName(), moduleData.getIdeModuleGroup());
|
||||
moduleData.setIdeModuleGroup(moduleGroup);
|
||||
|
||||
// adjust ide module group
|
||||
final ModuleData moduleData = moduleNode.getData();
|
||||
if (moduleData.getIdeModuleGroup() != null) {
|
||||
String[] moduleGroup = ArrayUtil.prepend(resultProjectDataNode.getData().getInternalName(), moduleData.getIdeModuleGroup());
|
||||
moduleData.setIdeModuleGroup(moduleGroup);
|
||||
|
||||
for (DataNode<GradleSourceSetData> sourceSetNode : ExternalSystemApiUtil.getChildren(moduleNode, GradleSourceSetData.KEY)) {
|
||||
sourceSetNode.getData().setIdeModuleGroup(moduleGroup);
|
||||
for (DataNode<GradleSourceSetData> sourceSetNode : ExternalSystemApiUtil.getChildren(moduleNode, GradleSourceSetData.KEY)) {
|
||||
sourceSetNode.getData().setIdeModuleGroup(moduleGroup);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+33
@@ -25,11 +25,13 @@ import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil;
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemConstants;
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemDebugEnvironment;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleGrouperKt;
|
||||
import com.intellij.openapi.module.StdModuleTypes;
|
||||
import com.intellij.openapi.roots.DependencyScope;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.PathUtilRt;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.gradle.api.artifacts.Dependency;
|
||||
import org.gradle.tooling.model.GradleProject;
|
||||
@@ -100,6 +102,7 @@ public class GradleProjectResolverUtil {
|
||||
|
||||
ExternalProject externalProject = resolverCtx.getExtraProject(gradleModule, ExternalProject.class);
|
||||
if (externalProject != null) {
|
||||
moduleData.setInternalName(getInternalModuleName(gradleModule, externalProject));
|
||||
moduleData.setGroup(externalProject.getGroup());
|
||||
moduleData.setVersion(externalProject.getVersion());
|
||||
moduleData.setDescription(externalProject.getDescription());
|
||||
@@ -111,6 +114,36 @@ public class GradleProjectResolverUtil {
|
||||
return projectDataNode.createChild(ProjectKeys.MODULE, moduleData);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static String getInternalModuleName(@NotNull IdeaModule gradleModule, @NotNull ExternalProject externalProject) {
|
||||
return getInternalModuleName(gradleModule, externalProject, null);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static String getInternalModuleName(@NotNull IdeaModule gradleModule,
|
||||
@NotNull ExternalProject externalProject,
|
||||
@Nullable String sourceSetName) {
|
||||
String delimiter;
|
||||
StringBuilder moduleName = new StringBuilder();
|
||||
if (ModuleGrouperKt.isQualifiedModuleNamesEnabled()) {
|
||||
delimiter = ".";
|
||||
if (StringUtil.isNotEmpty(externalProject.getGroup())) {
|
||||
moduleName.append(externalProject.getGroup()).append(delimiter);
|
||||
}
|
||||
moduleName.append(externalProject.getName());
|
||||
}
|
||||
else {
|
||||
delimiter = "_";
|
||||
moduleName.append(gradleModule.getName());
|
||||
}
|
||||
if (sourceSetName != null) {
|
||||
assert !sourceSetName.isEmpty();
|
||||
moduleName.append(delimiter);
|
||||
moduleName.append(sourceSetName);
|
||||
}
|
||||
return PathUtilRt.suggestFileName(moduleName.toString(), true, false);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static String getModuleConfigPath(@NotNull ProjectResolverContext resolverCtx,
|
||||
@NotNull IdeaModule gradleModule,
|
||||
|
||||
Reference in New Issue
Block a user