import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId;
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotificationListenerAdapter;
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskType;
+import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.gradle.util.GradleConstants;
-import static javax.swing.SwingUtilities.invokeLater;
-
/**
* {@link GradleMavenProjectImportNotificationListener} listens for Gradle project import events.
*
&& id.getType() == ExternalSystemTaskType.RESOLVE_PROJECT) {
final Project project = id.findProject();
if (project == null) return;
- invokeLater(new ImportMavenRepositoriesTask(project));
+ DumbService.getInstance(project).smartInvokeLater(new ImportMavenRepositoriesTask(project));
}
}
}
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.startup.StartupActivity;
-import com.intellij.openapi.startup.StartupManager;
import org.jetbrains.annotations.NotNull;
/**
@Override
public void runActivity(@NotNull final Project project) {
if (ApplicationManager.getApplication().isUnitTestMode()) return;
- DumbService.getInstance(project).smartInvokeLater(new ImportMavenRepositoriesTask(project));
+ DumbService.getInstance(project).smartInvokeLater(new ImportMavenRepositoriesTask(project, false));
}
}
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.application.Result;
-import com.intellij.openapi.command.WriteCommandAction;
-import com.intellij.openapi.externalSystem.util.ExternalSystemConstants;
+import com.intellij.openapi.externalSystem.settings.ExternalProjectSettings;
+import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.project.Project;
}
private final Project myProject;
+ private final boolean myForce;
- public ImportMavenRepositoriesTask(Project project) {
+ public ImportMavenRepositoriesTask(Project project, boolean force) {
myProject = project;
+ myForce = force;
+ }
+
+ public ImportMavenRepositoriesTask(Project project) {
+ this(project, true);
}
@Override
final ModuleManager moduleManager = ModuleManager.getInstance(myProject);
for (Module module : moduleManager.getModules()) {
- final String externalSystemId = module.getOptionValue(ExternalSystemConstants.EXTERNAL_SYSTEM_ID_KEY);
- final String modulePath = module.getOptionValue(ExternalSystemConstants.LINKED_PROJECT_PATH_KEY);
- if (!GradleConstants.SYSTEM_ID.getId().equals(externalSystemId) || modulePath == null) continue;
+ if (!ExternalSystemApiUtil.isExternalSystemAwareModule(GradleConstants.SYSTEM_ID, module)) continue;
+
+ final String modulePath = ExternalSystemApiUtil.getExternalProjectPath(module);
+ assert modulePath != null;
+
+ if (!myForce) {
+ final ExternalProjectSettings linkedProjectSettings =
+ ExternalSystemApiUtil.getSettings(myProject, GradleConstants.SYSTEM_ID).getLinkedProjectSettings(modulePath);
+
+ if (linkedProjectSettings == null || !linkedProjectSettings.isUseAutoImport()) continue;
+ }
String buildScript = FileUtil.findFileInProvidedPath(modulePath, GradleConstants.DEFAULT_SCRIPT_NAME);
if (StringUtil.isEmpty(buildScript)) continue;