Support maven 3

Add option "Use maven 3
This commit is contained in:
Sergey Evdokimov
2012-10-09 17:26:08 +04:00
parent 8a2d32baf4
commit 581874ef07
3 changed files with 58 additions and 29 deletions

View File

@@ -233,10 +233,24 @@ public def layoutCommunityPlugins(String home) {
jar("maven2-server-impl.jar") {
module("maven2-server-impl")
}
jar("maven3-server-impl.jar") {
module("maven3-server-impl")
}
dir("maven3") {
fileset(dir: "$home/plugins/maven/maven3-server-impl/lib") {include(name: "maven-dependency-tree-*.jar")}
fileset(dir: "$home/plugins/maven/maven3-server-impl/lib") {include(name: "nexus-indexer-*.jar")}
fileset(dir: "$home/plugins/maven/maven3-server-impl/lib/maven3/lib") {include(name: "*.jar")}
fileset(dir: "$home/plugins/maven/maven3-server-impl/lib/maven3/boot")
}
dir("maven2") {
fileset(dir: "$home/lib/") { include(name: "jaxb*.jar")}
fileset(dir: "$home/plugins/maven/maven2-server-impl/lib")
}
fileset(dir: "$home/plugins/maven/lib")
fileset(dir: "$home/lib/") { include(name: "jaxb*.jar")}
fileset(dir: "$home/plugins/maven/maven-server-api/lib")
fileset(dir: "$home/plugins/maven/maven2-server-impl/lib")
}
layoutPlugin("gradle") {

View File

@@ -32,12 +32,10 @@ import com.intellij.openapi.projectRoots.JavaSdkType;
import com.intellij.openapi.projectRoots.JdkUtil;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.SimpleJavaSdkType;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.ShutDownTracker;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.util.Alarm;
import com.intellij.util.PathUtil;
import com.intellij.util.SmartList;
import com.intellij.util.SystemProperties;
import com.intellij.util.containers.ContainerUtil;
import gnu.trove.THashMap;
@@ -176,7 +174,7 @@ public class MavenServerManager extends RemoteObjectWrapper<MavenServer> impleme
ContainerUtil.addIfNotNull(PathUtil.getJarPathForClass(Query.class), classPath);
params.getClassPath().add(PathManager.getResourceRoot(getClass(), "/messages/CommonBundle.properties"));
params.getClassPath().addAll(classPath);
params.getClassPath().addAllFiles(collectClassPathAndLibsFolder().first);
params.getClassPath().addAllFiles(collectClassPathAndLibsFolder());
params.setMainClass(MAIN_CLASS);
@@ -262,51 +260,68 @@ public class MavenServerManager extends RemoteObjectWrapper<MavenServer> impleme
};
}
public static Pair<List<File>, File> collectClassPathAndLibsFolder() {
public static File getMavenLibDirectory() {
File pluginFileOrDir = new File(PathUtil.getJarPathForClass(MavenServerManager.class));
if (pluginFileOrDir.isDirectory()) {
File luceneLib = new File(PathUtil.getJarPathForClass(Query.class));
return new File(luceneLib.getParentFile().getParentFile().getParentFile(), "maven3-server-impl/lib/maven3/lib");
}
return new File(pluginFileOrDir.getParentFile(), "maven3");
}
public static List<File> collectClassPathAndLibsFolder() {
File pluginFileOrDir = new File(PathUtil.getJarPathForClass(MavenServerManager.class));
File libDir;
List<File> classpath = new SmartList<File>();
List<File> classpath = new ArrayList<File>();
String root = pluginFileOrDir.getParent();
if (pluginFileOrDir.isDirectory()) {
classpath.add(new File(pluginFileOrDir.getParent(), "maven-server-api"));
classpath.add(new File(root, "maven-server-api"));
File luceneLib = new File(PathUtil.getJarPathForClass(Query.class));
if (getInstance().isUseMaven2()) {
classpath.add(new File(pluginFileOrDir.getParent(), "maven2-server-impl"));
File luceneLib = new File(PathUtil.getJarPathForClass(Query.class));
libDir = new File(luceneLib.getParentFile().getParentFile().getParentFile(), "maven2-server-impl/lib");
classpath.add(new File(root, "maven2-server-impl"));
addDir(classpath, new File(luceneLib.getParentFile().getParentFile().getParentFile(), "maven2-server-impl/lib"));
}
else {
classpath.add(new File(pluginFileOrDir.getParent(), "maven3-server-impl"));
File luceneLib = new File(PathUtil.getJarPathForClass(Query.class));
classpath.add(new File(root, "maven3-server-impl"));
File maven3Module_Lib = new File(luceneLib.getParentFile().getParentFile().getParentFile(), "maven3-server-impl/lib");
addDir(classpath, maven3Module_Lib);
File maven3Home = new File(maven3Module_Lib, "maven3");
libDir = new File(maven3Home, "lib");
addDir(classpath, new File(maven3Home, "lib"));
classpath.add(new File(maven3Home, "boot/plexus-classworlds-2.4.jar"));
for (File jar : maven3Module_Lib.listFiles()) {
if (jar.isFile() && jar.getName().endsWith(".jar")) {
classpath.add(jar);
}
}
}
}
else {
libDir = pluginFileOrDir.getParentFile();
}
MavenLog.LOG.assertTrue(libDir.exists() && libDir.isDirectory(), "Maven server libraries dir not found: " + libDir);
classpath.add(new File(root, "maven-server-api.jar"));
File[] files = libDir.listFiles();
for (File jar : files) {
if (jar.isFile() && jar.getName().endsWith(".jar") && !jar.equals(pluginFileOrDir)) {
if (getInstance().isUseMaven2()) {
classpath.add(new File(root, "maven2-server-impl.jar"));
addDir(classpath, new File(root, "maven2"));
}
else {
classpath.add(new File(root, "maven3-server-impl.jar"));
addDir(classpath, new File(root, "maven3"));
}
}
return classpath;
}
private static void addDir(List<File> classpath, File dir) {
for (File jar : dir.listFiles()) {
if (jar.isFile() && jar.getName().endsWith(".jar")) {
classpath.add(jar);
}
}
return Pair.create(classpath, libDir);
}
public MavenEmbedderWrapper createEmbedder(final Project project, final boolean alwaysOnline) {

View File

@@ -689,7 +689,7 @@ public class MavenUtil {
result = doResolveSuperPomFile(new File(mavenHome, LIB_DIR));
}
if (result == null) {
result = doResolveSuperPomFile(MavenServerManager.collectClassPathAndLibsFolder().second);
result = doResolveSuperPomFile(MavenServerManager.getMavenLibDirectory());
}
return result;
}