diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java index 1eafd66d831a..9e27e95462d3 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java @@ -93,8 +93,25 @@ public class MavenServerManager extends RemoteObjectWrapper impleme private final Alarm myShutdownAlarm = new Alarm(Alarm.ThreadToUse.SHARED_THREAD); private State myState = new State(); - private final File myBundledMaven2Home; - private final File myBundledMaven3Home; + private static class BundledMavenPathHolder { + private static final File myBundledMaven2Home; + private static final File myBundledMaven3Home; + + static { + final File pluginFileOrDir = new File(PathUtil.getJarPathForClass(MavenServerManager.class)); + final String root = pluginFileOrDir.getParent(); + + if (pluginFileOrDir.isDirectory()) { + File parentFile = getMavenPluginParentFile(); + myBundledMaven2Home = new File(parentFile, "maven2-server-impl/lib/maven2"); + myBundledMaven3Home = new File(parentFile, "maven30-server-impl/lib/maven3"); + } + else { + myBundledMaven2Home = new File(root, "maven2"); + myBundledMaven3Home = new File(root, "maven3"); + } + } + } static class State { @Deprecated @@ -117,19 +134,6 @@ public class MavenServerManager extends RemoteObjectWrapper impleme public MavenServerManager() { super(null); - final File pluginFileOrDir = new File(PathUtil.getJarPathForClass(MavenServerManager.class)); - final String root = pluginFileOrDir.getParent(); - - if (pluginFileOrDir.isDirectory()) { - File parentFile = getMavenPluginParentFile(); - myBundledMaven2Home = new File(parentFile, "maven2-server-impl/lib/maven2"); - myBundledMaven3Home = new File(parentFile, "maven30-server-impl/lib/maven3"); - } - else { - myBundledMaven2Home = new File(root, "maven2"); - myBundledMaven3Home = new File(root, "maven3"); - } - mySupport = new RemoteProcessSupport(MavenServer.class) { @Override protected void fireModificationCountChanged() { @@ -386,7 +390,7 @@ public class MavenServerManager extends RemoteObjectWrapper impleme public List collectClassPathAndLibsFolder(boolean forceMaven2) { final String currentMavenVersion = forceMaven2 ? "2.2.1" : getCurrentMavenVersion(); - File mavenHome = forceMaven2 ? myBundledMaven2Home : currentMavenVersion == null ? myBundledMaven3Home : getCurrentMavenHomeFile(); + File mavenHome = forceMaven2 ? BundledMavenPathHolder.myBundledMaven2Home : currentMavenVersion == null ? BundledMavenPathHolder.myBundledMaven3Home : getCurrentMavenHomeFile(); final File pluginFileOrDir = new File(PathUtil.getJarPathForClass(MavenServerManager.class)); final List classpath = new ArrayList(); @@ -400,7 +404,7 @@ public class MavenServerManager extends RemoteObjectWrapper impleme addDir(classpath, new File(parentFile, "maven2-server-impl/lib")); // use bundled maven 2.2.1 for all 2.0.x version (since we use org.apache.maven.project.interpolation.StringSearchModelInterpolator introduced in 2.1.0) if (StringUtil.compareVersionNumbers(currentMavenVersion, "2.1.0") < 0) { - mavenHome = myBundledMaven2Home; + mavenHome = BundledMavenPathHolder.myBundledMaven2Home; } } else { @@ -615,13 +619,13 @@ public class MavenServerManager extends RemoteObjectWrapper impleme } @Nullable - public File getMavenHomeFile(@Nullable String mavenHome) { + public static File getMavenHomeFile(@Nullable String mavenHome) { if(mavenHome == null) return null; if (StringUtil.equals(BUNDLED_MAVEN_2, mavenHome)) { - return myBundledMaven2Home; + return BundledMavenPathHolder.myBundledMaven2Home; } if (StringUtil.equals(BUNDLED_MAVEN_3, mavenHome)) { - return myBundledMaven3Home; + return BundledMavenPathHolder.myBundledMaven3Home; } final File home = new File(mavenHome); return MavenUtil.isValidMavenHome(home) ? home : null; 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 d92fc84b6731..020a32f50b4d 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 @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -561,7 +561,7 @@ public class MavenUtil { } } - return MavenServerManager.getInstance().getMavenHomeFile(MavenServerManager.BUNDLED_MAVEN_3); + return MavenServerManager.getMavenHomeFile(MavenServerManager.BUNDLED_MAVEN_3); } @Nullable