gradle: do not perform import of maven repositories after project open if auto-import...
authorVladislav.Soroka <Vladislav.Soroka@jetbrains.com>
Thu, 27 Nov 2014 09:09:49 +0000 (12:09 +0300)
committerVladislav.Soroka <Vladislav.Soroka@jetbrains.com>
Mon, 8 Dec 2014 09:00:07 +0000 (12:00 +0300)
plugins/gradle/src/org/jetbrains/plugins/gradle/integrations/maven/GradleMavenProjectImportNotificationListener.java
plugins/gradle/src/org/jetbrains/plugins/gradle/integrations/maven/GradleProjectStartupActivity.java
plugins/gradle/src/org/jetbrains/plugins/gradle/integrations/maven/ImportMavenRepositoriesTask.java

index 089bc1a96dfa5d68aeb490ed10af1f6327b72877..30f399fc9b7b6dd00157fc183d95ae1d1b8dba78 100644 (file)
@@ -18,12 +18,11 @@ package org.jetbrains.plugins.gradle.integrations.maven;
 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.
  *
@@ -38,7 +37,7 @@ public class GradleMavenProjectImportNotificationListener extends ExternalSystem
         && 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));
     }
   }
 }
index 7c014cc3777de9853ec4e28be5860fde696548f6..11186fdb216e78cea8a332e70986b8f814003f3a 100644 (file)
@@ -19,7 +19,6 @@ import com.intellij.openapi.application.ApplicationManager;
 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;
 
 /**
@@ -31,6 +30,6 @@ public class GradleProjectStartupActivity implements StartupActivity {
   @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));
   }
 }
index 889fc1a73cb29d205accd9e819a3c5e2f62f79af..8b17471b92477e39d7f88bd75f0ef217be91dbc3 100644 (file)
@@ -18,8 +18,8 @@ package org.jetbrains.plugins.gradle.integrations.maven;
 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;
@@ -68,9 +68,15 @@ public class ImportMavenRepositoriesTask implements Runnable {
   }
 
   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
@@ -83,9 +89,17 @@ public class ImportMavenRepositoriesTask implements Runnable {
 
     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;