From 1d2e787f5324bceeeb6ff393b4be52ac6424245e Mon Sep 17 00:00:00 2001 From: Alexander Bubenchikov Date: Thu, 4 Feb 2021 15:25:30 +0300 Subject: [PATCH] IDEA-261272 - maven wsl pom highlight GitOrigin-RevId: 1c3bf1d85471c6d2a746c0a00b00f9107d3b348d --- .../maven/project/MavenProjectsManager.java | 10 +++- .../jetbrains/idea/maven/utils/MavenUtil.java | 7 +-- .../idea/maven/utils/MavenWslUtil.kt | 49 ++++++++++++------- 3 files changed, 43 insertions(+), 23 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java index 2a58e9e8113b..f581caa95397 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java @@ -4,6 +4,7 @@ package org.jetbrains.idea.maven.project; import com.intellij.build.BuildProgressListener; import com.intellij.build.SyncViewManager; import com.intellij.configurationStore.SettingsSavingComponentJavaAdapter; +import com.intellij.execution.wsl.WSLDistribution; import com.intellij.ide.startup.StartupManagerEx; import com.intellij.openapi.Disposable; import com.intellij.openapi.application.Application; @@ -195,7 +196,14 @@ public final class MavenProjectsManager extends MavenSimpleProjectComponent } public File getLocalRepository() { - return getGeneralSettings().getEffectiveLocalRepository(); + WSLDistribution wslDistribution = MavenWslUtil.tryGetWslDistribution(myProject); + if (wslDistribution == null) { + return getGeneralSettings().getEffectiveLocalRepository(); + } + return MavenWslUtil.resolveLocalRepository(wslDistribution, + null, + null, + null); } @ApiStatus.Internal diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java index a45adf348bed..2ae5785e7e82 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java @@ -772,7 +772,8 @@ public class MavenUtil { if (!isEmptyOrSpaces(overriddenLocalRepository)) result = new File(overriddenLocalRepository); if (result == null) { result = doResolveLocalRepository(resolveUserSettingsFile(overriddenUserSettingsFile), - resolveGlobalSettingsFile(overriddenMavenHome)); + resolveGlobalSettingsFile(overriddenMavenHome), + resolveM2Dir()); } try { return result.getCanonicalFile(); @@ -810,7 +811,7 @@ public class MavenUtil { } @NotNull - public static File doResolveLocalRepository(@Nullable File userSettingsFile, @Nullable File globalSettingsFile) { + protected static File doResolveLocalRepository(@Nullable File userSettingsFile, @Nullable File globalSettingsFile, @NotNull File defaultM2Dir) { if (userSettingsFile != null) { final String fromUserSettings = getRepositoryFromSettings(userSettingsFile); if (!isEmpty(fromUserSettings)) { @@ -825,7 +826,7 @@ public class MavenUtil { } } - return new File(resolveM2Dir(), REPOSITORY_DIR); + return new File(defaultM2Dir, REPOSITORY_DIR); } @Nullable diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenWslUtil.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenWslUtil.kt index 5eac51f57788..ccf1597b9eb1 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenWslUtil.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenWslUtil.kt @@ -6,7 +6,6 @@ import com.intellij.execution.wsl.WslDistributionManager import com.intellij.openapi.project.Project import org.jetbrains.idea.maven.server.WslMavenDistribution import java.io.File -import java.io.IOException object MavenWslUtil : MavenUtil() { @JvmStatic @@ -26,9 +25,23 @@ object MavenWslUtil : MavenUtil() { return project.basePath?.let { WslDistributionManager.getInstance().distributionFromPath(it) } } + /** + * return file in windows-style ("\\wsl$\distrib-name\home\user\.m2\settings.xml") + */ @JvmStatic fun WSLDistribution.resolveUserSettingsFile(overriddenUserSettingsFile: String?): File { - return if (!isEmptyOrSpaces(overriddenUserSettingsFile)) File(overriddenUserSettingsFile) else File(this.resolveM2Dir(), SETTINGS_XML) + val localFile = if (!isEmptyOrSpaces(overriddenUserSettingsFile)) File(overriddenUserSettingsFile) + else File(this.resolveM2Dir(), SETTINGS_XML) + return this.getWindowsFile(localFile)!! + } + + /** + * return file in windows-style ("\\wsl$\distrib-name\home\user\.m2\settings.xml") + */ + @JvmStatic + fun WSLDistribution.resolveGlobalSettingsFile(overriddenMavenHome: String?): File? { + val directory = this.resolveMavenHomeDirectory(overriddenMavenHome) ?: return null + return File(File(directory, CONF_DIR), SETTINGS_XML) } /** @@ -84,7 +97,7 @@ object MavenWslUtil : MavenUtil() { } /** - * return file in wsl style + * return file in windows style */ @JvmStatic fun WSLDistribution.resolveLocalRepository(overriddenLocalRepository: String?, @@ -94,23 +107,10 @@ object MavenWslUtil : MavenUtil() { if (overriddenLocalRepository != null && !isEmptyOrSpaces(overriddenLocalRepository)) result = File(overriddenLocalRepository) if (result == null) { result = doResolveLocalRepository(this.resolveUserSettingsFile(overriddenUserSettingsFile), - this.resolveGlobalSettingsFile(overriddenMavenHome)) + this.resolveGlobalSettingsFile(overriddenMavenHome), + this.resolveM2Dir()) } - return try { - result.canonicalFile - } - catch (e: IOException) { - result - } - } - - /** - * return file in windows-style ("\\wsl$\distrib-name\home\user\.m2\settings.xml") - */ - @JvmStatic - fun WSLDistribution.resolveGlobalSettingsFile(overriddenMavenHome: String?): File? { - val directory = this.resolveMavenHomeDirectory(overriddenMavenHome) ?: return null - return File(File(directory, CONF_DIR), SETTINGS_XML) + return this.getWindowsFile(result)!! } @JvmStatic @@ -120,7 +120,18 @@ object MavenWslUtil : MavenUtil() { return WslMavenDistribution(this, wslFile, "default") } + @JvmStatic fun getJdkPath(wslDistribution: WSLDistribution): String? { return wslDistribution.getEnvironmentVariable("JAVA_HOME"); } + + @JvmStatic + fun WSLDistribution.getWindowsFile(wslFile: File?): File? { + return wslFile?.let { this.getWindowsPath(wslFile.path) }?.let(::File) + } + + @JvmStatic + fun WSLDistribution.getWslFile(wslFile: File?): File? { + return wslFile?.let { this.getWindowsPath(wslFile.path) }?.let(::File) + } } \ No newline at end of file