diff --git a/build/scripts/layouts.gant b/build/scripts/layouts.gant
index fb0427ec800e..27e02a867918 100644
--- a/build/scripts/layouts.gant
+++ b/build/scripts/layouts.gant
@@ -299,6 +299,13 @@ public def layoutCommunityPlugins(String home) {
}
}
+ jar("artifact-resolver-m31.jar") {
+ module("maven-artifact-resolver-m31")
+ module("maven-artifact-resolver-m2") {
+ include(name: 'org/jetbrains/idea/maven/artifactResolver/common/*')
+ }
+ }
+
dir("maven3") {
fileset(dir: "$home/plugins/maven/maven3-server-impl/lib") {include(name: "*.jar")}
fileset(dir: "$home/plugins/maven/maven3-server-impl/lib/maven3/lib") {include(name: "*.jar")}
diff --git a/plugins/maven/artifact-resolver-m31/lib/eclipse-aether/aether-api-0.9.0.M2.jar b/plugins/maven/artifact-resolver-m31/lib/eclipse-aether/aether-api-0.9.0.M2.jar
new file mode 100644
index 000000000000..e5b122cec252
Binary files /dev/null and b/plugins/maven/artifact-resolver-m31/lib/eclipse-aether/aether-api-0.9.0.M2.jar differ
diff --git a/plugins/maven/artifact-resolver-m31/maven-artifact-resolver-m31.iml b/plugins/maven/artifact-resolver-m31/maven-artifact-resolver-m31.iml
new file mode 100644
index 000000000000..3d45f6bed168
--- /dev/null
+++ b/plugins/maven/artifact-resolver-m31/maven-artifact-resolver-m31.iml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/maven/artifact-resolver-m31/src/META-INF/plexus/components.xml b/plugins/maven/artifact-resolver-m31/src/META-INF/plexus/components.xml
new file mode 100644
index 000000000000..d4d29b1060f7
--- /dev/null
+++ b/plugins/maven/artifact-resolver-m31/src/META-INF/plexus/components.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ org.eclipse.aether.repository.WorkspaceReader
+ ide
+ org.jetbrains.idea.maven.artifactResolver.IntelliJWorkspaceReaderM31
+
+ false
+
+
+
diff --git a/plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/IntelliJWorkspaceReaderM31.java b/plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/IntelliJWorkspaceReaderM31.java
new file mode 100644
index 000000000000..5f5386ca3a1f
--- /dev/null
+++ b/plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/IntelliJWorkspaceReaderM31.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2000-2013 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jetbrains.idea.maven.artifactResolver;
+
+import org.codehaus.plexus.component.annotations.Component;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.repository.WorkspaceReader;
+import org.eclipse.aether.repository.WorkspaceRepository;
+import org.jetbrains.idea.maven.artifactResolver.common.MavenModuleMap;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author Sergey Evdokimov
+ */
+@Component(role = WorkspaceReader.class, hint = "ide")
+public class IntelliJWorkspaceReaderM31 implements WorkspaceReader {
+
+ private final WorkspaceRepository myWorkspaceRepository;
+
+ public IntelliJWorkspaceReaderM31() {
+ myWorkspaceRepository = new WorkspaceRepository("ide", getClass());
+ }
+
+ @Override
+ public int hashCode() {
+ return 311;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ return o instanceof IntelliJWorkspaceReaderM31;
+ }
+
+ public WorkspaceRepository getRepository() {
+ return myWorkspaceRepository;
+ }
+
+ public File findArtifact(Artifact artifact) {
+ return MavenModuleMap.getInstance().findArtifact(artifact.getGroupId(), artifact.getArtifactId(), artifact.getExtension(),
+ artifact.getBaseVersion());
+ }
+
+ public List findVersions(Artifact artifact) {
+ return Collections.emptyList();
+ }
+}
diff --git a/plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/MavenArtifactResolvedM31RtMarker.java b/plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/MavenArtifactResolvedM31RtMarker.java
new file mode 100644
index 000000000000..ad15baf8aae2
--- /dev/null
+++ b/plugins/maven/artifact-resolver-m31/src/org/jetbrains/idea/maven/artifactResolver/MavenArtifactResolvedM31RtMarker.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2000-2013 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jetbrains.idea.maven.artifactResolver;
+
+/**
+ * @author Sergey Evdokimov
+ */
+public class MavenArtifactResolvedM31RtMarker {
+}
diff --git a/plugins/maven/maven.iml b/plugins/maven/maven.iml
index 8c58bb720940..c15aa891282b 100644
--- a/plugins/maven/maven.iml
+++ b/plugins/maven/maven.iml
@@ -59,6 +59,7 @@
+
diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenExternalParameters.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenExternalParameters.java
index a8f4606d176c..d5f11ad62408 100644
--- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenExternalParameters.java
+++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenExternalParameters.java
@@ -47,6 +47,7 @@ import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.maven.artifactResolver.MavenArtifactResolvedM2RtMarker;
+import org.jetbrains.idea.maven.artifactResolver.MavenArtifactResolvedM31RtMarker;
import org.jetbrains.idea.maven.artifactResolver.MavenArtifactResolvedM3RtMarker;
import org.jetbrains.idea.maven.artifactResolver.common.MavenModuleMap;
import org.jetbrains.idea.maven.project.MavenGeneralSettings;
@@ -126,7 +127,7 @@ public class MavenExternalParameters {
if (project != null && parameters.isResolveToWorkspace()) {
try {
- String resolverJar = getArtifactResolverJar(MavenUtil.isMaven3(mavenHome));
+ String resolverJar = getArtifactResolverJar(MavenUtil.getMavenVersion(mavenHome));
confFile = patchConfFile(confFile, resolverJar);
File modulesPathsFile = dumpModulesPaths(project);
@@ -196,11 +197,24 @@ public class MavenExternalParameters {
finally {
sc.close();
}
-
}
- private static String getArtifactResolverJar(boolean isMaven3) throws IOException {
- Class marker = isMaven3 ? MavenArtifactResolvedM3RtMarker.class : MavenArtifactResolvedM2RtMarker.class;
+ private static String getArtifactResolverJar(@Nullable String mavenVersion) throws IOException {
+ boolean isMaven3;
+ Class marker;
+
+ if (mavenVersion != null && mavenVersion.compareTo("3.1.0") >= 0) {
+ isMaven3 = true;
+ marker = MavenArtifactResolvedM31RtMarker.class;
+ }
+ else if (mavenVersion != null && mavenVersion.compareTo("3.0.0") >= 0) {
+ isMaven3 = true;
+ marker = MavenArtifactResolvedM3RtMarker.class;
+ }
+ else {
+ isMaven3 = false;
+ marker = MavenArtifactResolvedM2RtMarker.class;
+ }
File classDirOrJar = new File(PathUtil.getJarPathForClass(marker));