IDEA-140208 java.lang.NoSuchMethodError: org.eclipse.aether.RepositorySystem.newResolutionRepositories(Lorg/eclipse/aether/RepositorySystemSession;Ljava/util/List;)Ljava/util/List;

This commit is contained in:
Vladislav.Soroka
2015-05-19 13:17:58 +03:00
parent cc99cc3ff8
commit 382196b687
4 changed files with 15 additions and 1 deletions
@@ -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,
@@ -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> T getComponent(Class<T> clazz, String roleHint);
@@ -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 {
@@ -288,6 +288,7 @@ public class MavenServerManager extends RemoteObjectWrapper<MavenServer> 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) {