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));