diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/buildtool/MavenSyncConsole.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/buildtool/MavenSyncConsole.kt index 31cbe6dd1281..2da97b985f31 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/buildtool/MavenSyncConsole.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/buildtool/MavenSyncConsole.kt @@ -259,15 +259,16 @@ class MavenSyncConsole(private val myProject: Project) { } private fun createMessageEvent(e: Throwable): MessageEventImpl { - if (e is CannotStartServerException) { - val cause = ExceptionUtil.findCause(e, ExecutionException::class.java) + val csse = ExceptionUtil.findCause(e, CannotStartServerException::class.java) + if (csse != null) { + val cause = ExceptionUtil.findCause(csse, ExecutionException::class.java) if (cause != null) { return MessageEventImpl(mySyncId, MessageEvent.Kind.ERROR, SyncBundle.message("build.event.title.internal.server.error"), getExceptionText(cause), getExceptionText(cause)) } else { return MessageEventImpl(mySyncId, MessageEvent.Kind.ERROR, SyncBundle.message("build.event.title.internal.server.error"), - getExceptionText(e), getExceptionText(e)) + getExceptionText(csse), getExceptionText(csse)) } } return MessageEventImpl(mySyncId, MessageEvent.Kind.ERROR, SyncBundle.message("build.event.title.error"), diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsProcessorReadingTask.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsProcessorReadingTask.java index e15d757b157f..c91a43df7578 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsProcessorReadingTask.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsProcessorReadingTask.java @@ -60,18 +60,21 @@ public class MavenProjectsProcessorReadingTask implements MavenProjectsProcessor MavenEmbeddersManager embeddersManager, MavenConsole console, MavenProgressIndicator indicator) throws MavenProcessCanceledException { - if (myFilesToUpdate == null) { - checkOrInstallMavenWrapper(project); - myTree.updateAll(myForce, mySettings, indicator); - } - else { - myTree.delete(myFilesToDelete, mySettings, indicator); - myTree.update(myFilesToUpdate, myForce, mySettings, indicator); - } + try { + if (myFilesToUpdate == null) { + checkOrInstallMavenWrapper(project); + myTree.updateAll(myForce, mySettings, indicator); + } + else { + myTree.delete(myFilesToDelete, mySettings, indicator); + myTree.update(myFilesToUpdate, myForce, mySettings, indicator); + } - mySettings.updateFromMavenConfig(myTree.getRootProjectsFiles()); - - if (myOnCompletion != null) myOnCompletion.run(); + mySettings.updateFromMavenConfig(myTree.getRootProjectsFiles()); + } + finally { + if (myOnCompletion != null) myOnCompletion.run(); + } } private void checkOrInstallMavenWrapper(Project project) { 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 43f22f2c9f43..8d5782127e4d 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 @@ -28,7 +28,6 @@ import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.util.text.StringUtil import com.intellij.ui.navigation.Place -import com.intellij.util.containers.CollectionFactory import com.intellij.util.text.VersionComparatorUtil import org.jetbrains.idea.maven.config.MavenConfig import org.jetbrains.idea.maven.config.MavenConfigSettings @@ -36,11 +35,11 @@ import org.jetbrains.idea.maven.execution.MavenRunnerSettings import org.jetbrains.idea.maven.execution.SyncBundle import org.jetbrains.idea.maven.project.MavenProjectBundle import org.jetbrains.idea.maven.project.MavenProjectsManager +import org.jetbrains.idea.maven.server.CannotStartServerException import org.jetbrains.idea.maven.server.MavenDistributionsCache import org.jetbrains.idea.maven.server.MavenServerManager import org.jetbrains.idea.maven.server.WslMavenDistribution import org.jetbrains.idea.maven.server.wsl.BuildIssueWslJdk -import org.jetbrains.idea.maven.wizards.MavenProjectBuilder import java.io.File import java.util.function.Function import java.util.function.Supplier @@ -119,10 +118,13 @@ object MavenWslUtil : MavenUtil() { return File(File(directory, CONF_DIR), SETTINGS_XML) } - @JvmStatic fun WSLDistribution.resolveM2Dir(): File { - return this.getWindowsFile(File(MavenWslCache.getInstance().wslEnv(this)["HOME"], DOT_M2_DIR)) + val userHome = MavenWslCache.getInstance().wslEnv(this)["HOME"] + if (userHome.isNullOrBlank()) { + throw CannotStartServerException(SyncBundle.message("maven.sync.wsl.userhome.cannot.resolve")) + } + return this.getWindowsFile(File(userHome, DOT_M2_DIR)) } /** diff --git a/plugins/maven/src/main/resources/messages/MavenSyncBundle.properties b/plugins/maven/src/main/resources/messages/MavenSyncBundle.properties index 13c825b27081..2796f7bc5f99 100644 --- a/plugins/maven/src/main/resources/messages/MavenSyncBundle.properties +++ b/plugins/maven/src/main/resources/messages/MavenSyncBundle.properties @@ -75,6 +75,7 @@ maven.wrapper.notification.downloading.error.content={0}
The Maven wrapper w maven.wrapper.notification.downloading.error.action=Re-enable Maven wrapper in settings. build.event.title.error=Error build.event.title.internal.server.error=Maven Server Error +build.event.title.cannot.start.server.error=Cannot start Maven Server importing.jdk.changed=JDK for importer was changed importing.jdk.changed.description=JDK for importer {0} not found and was changed to {1}.
Consider Maven settings to change importer JDK maven.sync.wrapper.http.title=HTTP used to download maven distribution @@ -93,4 +94,6 @@ maven.sync.wsl.jdk=Maven JDK for importer should be WSL JDK maven.sync.wsl.jdk.set.to.project=For the correct importing process Maven JDK for importer was run with Project JDK maven.sync.wsl.jdk.revert.usr=Maven JDK for importer was not found, /usr/bin/java will be used if exists maven.sync.wsl.jdk.fix=Open Maven Importing settings +maven.sync.wsl.userhome.cannot.resolve=Cannot resolve $HOME variable on WSL + maven.cannot.reconnect=Cannot connect to the Maven process. Try again later. If the problem persists, check the Maven Importing JDK settings and restart IntelliJ IDEA