From aa63ae712c4d45f523c341d28bc83e5193011d6e Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Mon, 30 Jul 2012 16:18:22 +0400 Subject: [PATCH] IDEA-89443 Gradle: Don't store autodetected gradle path at the settings --- .../plugins/gradle/config/GradlePatcher.java | 22 ++++++++++++++----- .../gradle/util/GradleLibraryManager.java | 12 +++++++++- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradlePatcher.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradlePatcher.java index 08acf62c5ce6..0359e3ef3a17 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradlePatcher.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradlePatcher.java @@ -1,9 +1,15 @@ package org.jetbrains.plugins.gradle.config; +import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; +import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.plugins.gradle.util.GradleLibraryManager; + +import java.io.File; /** * Encapsulates functionality of patching problems from the previous gradle integration releases. @@ -28,15 +34,19 @@ public class GradlePatcher { return; } + // Propagate gradle settings from the current project to the default project if necessary. final GradleSettings defaultProjectSettings = GradleSettings.getInstance(defaultProject); final GradleSettings currentProjectSettings = GradleSettings.getInstance(project); - if (!StringUtil.isEmpty(currentProjectSettings.getGradleHome()) && StringUtil.isEmpty(defaultProjectSettings.getGradleHome())) { - GradleSettings.applyGradleHome(currentProjectSettings.getGradleHome(), defaultProject); + String projectGradleHome = currentProjectSettings.getGradleHome(); + String defaultGradleHome = defaultProjectSettings.getGradleHome(); + if (StringUtil.isEmpty(projectGradleHome) || !StringUtil.isEmpty(defaultGradleHome)) { + return; } - else if (!StringUtil.isEmpty(defaultProjectSettings.getGradleHome()) - && StringUtil.isEmpty(currentProjectSettings.getGradleHome())) - { - GradleSettings.applyGradleHome(defaultProjectSettings.getGradleHome(), project); + GradleLibraryManager libraryManager = ServiceManager.getService(GradleLibraryManager.class); + File autodetectedGradleHome = libraryManager.getAutodetectedGradleHome(); + // We don't want to store auto-detected value at the settings. + if (autodetectedGradleHome == null || !FileUtil.filesEqual(autodetectedGradleHome, new File(projectGradleHome))) { + GradleSettings.applyGradleHome(projectGradleHome, defaultProject); } } } diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/util/GradleLibraryManager.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/util/GradleLibraryManager.java index 56347cde1ccd..e2f329df07a4 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/util/GradleLibraryManager.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/util/GradleLibraryManager.java @@ -104,7 +104,17 @@ public class GradleLibraryManager { if (result != null) { return result; } - result = getGradleHomeFromPath(); + return getAutodetectedGradleHome(); + } + + /** + * Tries to deduce gradle location from current environment. + * + * @return gradle home deduced from the current environment (if any); null otherwise + */ + @Nullable + public File getAutodetectedGradleHome() { + File result = getGradleHomeFromPath(); return result == null ? getGradleHomeFromEnvProperty() : result; }