From 382196b687b29ddabd63bf8c70b7a2a7f5cbd5f7 Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Tue, 19 May 2015 13:16:37 +0300 Subject: [PATCH] IDEA-140208 java.lang.NoSuchMethodError: org.eclipse.aether.RepositorySystem.newResolutionRepositories(Lorg/eclipse/aether/RepositorySystemSession;Ljava/util/List;)Ljava/util/List; --- .../jetbrains/idea/maven/server/MavenServerEmbedder.java | 2 ++ .../jetbrains/idea/maven/server/Maven3ServerEmbedder.java | 7 +++++++ .../idea/maven/server/Maven32ServerEmbedderImpl.java | 6 +++++- .../jetbrains/idea/maven/server/MavenServerManager.java | 1 + 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/plugins/maven/maven-server-api/src/org/jetbrains/idea/maven/server/MavenServerEmbedder.java b/plugins/maven/maven-server-api/src/org/jetbrains/idea/maven/server/MavenServerEmbedder.java index 6b3db15e7035..ab8e310daafb 100644 --- a/plugins/maven/maven-server-api/src/org/jetbrains/idea/maven/server/MavenServerEmbedder.java +++ b/plugins/maven/maven-server-api/src/org/jetbrains/idea/maven/server/MavenServerEmbedder.java @@ -26,6 +26,8 @@ import java.util.Collection; import java.util.List; public interface MavenServerEmbedder extends Remote { + String MAVEN_EMBEDDER_VERSION = "idea.maven.embedder.version"; + void customize(@Nullable MavenWorkspaceMap workspaceMap, boolean failOnUnresolvedDependency, @NotNull MavenServerConsole console, diff --git a/plugins/maven/maven3-server-common/src/org/jetbrains/idea/maven/server/Maven3ServerEmbedder.java b/plugins/maven/maven3-server-common/src/org/jetbrains/idea/maven/server/Maven3ServerEmbedder.java index c483c2540e1b..2a1e7beb5fef 100644 --- a/plugins/maven/maven3-server-common/src/org/jetbrains/idea/maven/server/Maven3ServerEmbedder.java +++ b/plugins/maven/maven3-server-common/src/org/jetbrains/idea/maven/server/Maven3ServerEmbedder.java @@ -19,6 +19,7 @@ import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.maven.execution.MavenExecutionRequest; +import org.jetbrains.annotations.Nullable; import java.io.File; import java.rmi.RemoteException; @@ -32,11 +33,17 @@ import java.util.List; public abstract class Maven3ServerEmbedder extends MavenRemoteObject implements MavenServerEmbedder { public final static boolean USE_MVN2_COMPATIBLE_DEPENDENCY_RESOLVING = System.getProperty("idea.maven3.use.compat.resolver") != null; + private final static String MAVEN_VERSION = System.getProperty(MAVEN_EMBEDDER_VERSION); public Maven3ServerEmbedder(MavenServerSettings settings) { initLog4J(settings); } + @Nullable + public String getMavenVersion() { + return MAVEN_VERSION; + } + @SuppressWarnings({"unchecked"}) public abstract T getComponent(Class clazz, String roleHint); diff --git a/plugins/maven/maven32-server-impl/src/org/jetbrains/idea/maven/server/Maven32ServerEmbedderImpl.java b/plugins/maven/maven32-server-impl/src/org/jetbrains/idea/maven/server/Maven32ServerEmbedderImpl.java index 369352738b5d..484e838d14f7 100644 --- a/plugins/maven/maven32-server-impl/src/org/jetbrains/idea/maven/server/Maven32ServerEmbedderImpl.java +++ b/plugins/maven/maven32-server-impl/src/org/jetbrains/idea/maven/server/Maven32ServerEmbedderImpl.java @@ -17,6 +17,7 @@ package org.jetbrains.idea.maven.server; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.io.FileUtil; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.ReflectionUtil; import com.intellij.util.SystemProperties; import gnu.trove.THashMap; @@ -905,7 +906,10 @@ public class Maven32ServerEmbedderImpl extends Maven3ServerEmbedder { RemoteException, org.eclipse.aether.resolution.ArtifactResolutionException { - if (USE_MVN2_COMPATIBLE_DEPENDENCY_RESOLVING) { + final String mavenVersion = getMavenVersion(); + // org.eclipse.aether.RepositorySystem.newResolutionRepositories() method doesn't exist in aether-api-0.9.0.M2.jar used before maven 3.2.5 + // see https://youtrack.jetbrains.com/issue/IDEA-140208 for details + if (USE_MVN2_COMPATIBLE_DEPENDENCY_RESOLVING || StringUtil.compareVersionNumbers(mavenVersion, "3.2.5") < 0) { MavenExecutionRequest request = new DefaultMavenExecutionRequest(); request.setRemoteRepositories(repos); try { 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 f418f77b2477..db84f73ee7c0 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 @@ -288,6 +288,7 @@ public class MavenServerManager extends RemoteObjectWrapper impleme } final String currentMavenVersion = forceMaven2 ? "2.2.1" : getCurrentMavenVersion(); + params.getVMParametersList().addProperty(MavenServerEmbedder.MAVEN_EMBEDDER_VERSION, currentMavenVersion); String version = JdkUtil.getJdkMainAttribute(jdk, Attributes.Name.IMPLEMENTATION_VERSION); if (StringUtil.compareVersionNumbers(currentMavenVersion, "3.3.1") >= 0 && StringUtil.compareVersionNumbers(version, "1.7") < 0) {