From d10b1728f67e034609efeebefe959977b77f08e3 Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Tue, 3 Jul 2012 19:42:48 +0400 Subject: [PATCH] Bug fix: find pom-4.0.0.xml file in maven3 home. --- .../jetbrains/idea/maven/utils/MavenUtil.java | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java index 333d73c3fb6c..58b1ddc45255 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java @@ -79,7 +79,12 @@ public class MavenUtil { public static final String M2_CONF_FILE = "m2.conf"; public static final String REPOSITORY_DIR = "repository"; public static final String LIB_DIR = "lib"; - public static final String SUPER_POM_PATH = "org/apache/maven/project/" + MavenConstants.SUPER_POM_XML; + + @SuppressWarnings("unchecked") + private static final Pair[] SUPER_POM_PATHS = new Pair[]{ + Pair.create(Pattern.compile("maven-\\d+\\.\\d+\\.\\d+-uber\\.jar"), "org/apache/maven/project/" + MavenConstants.SUPER_POM_XML), + Pair.create(Pattern.compile("maven-model-builder-\\d+\\.\\d+\\.\\d+\\.jar"), "org/apache/maven/model/" + MavenConstants.SUPER_POM_XML) + }; private static volatile Map ourPropertiesFromMvnOpts; @@ -687,30 +692,28 @@ public class MavenUtil { } @Nullable - public static VirtualFile doResolveSuperPomFile(@Nullable File mavenHome) { - File lib = resolveMavenLib(mavenHome); - if (lib == null) return null; + public static VirtualFile doResolveSuperPomFile(@NotNull File mavenHome) { + File[] files = mavenHome.listFiles(); + if (files == null) return null; - VirtualFile file = LocalFileSystem.getInstance().findFileByIoFile(lib); - if (file == null) return null; + for (File library : files) { - VirtualFile root = JarFileSystem.getInstance().getJarRootForLocalFile(file); - if (root == null) return null; + for (Pair path : SUPER_POM_PATHS) { + if (path.first.matcher(library.getName()).matches()) { + VirtualFile libraryVirtualFile = LocalFileSystem.getInstance().findFileByIoFile(library); + if (libraryVirtualFile == null) continue; - return root.findFileByRelativePath(SUPER_POM_PATH); - } + VirtualFile root = JarFileSystem.getInstance().getJarRootForLocalFile(libraryVirtualFile); + if (root == null) continue; - @Nullable - public static File resolveMavenLib(@NotNull File dir) { - File[] files = dir.listFiles(); - if (files != null) { - Pattern pattern = Pattern.compile("maven-\\d+\\.\\d+\\.\\d+-uber\\.jar"); - for (File each : files) { - if (pattern.matcher(each.getName()).matches()) { - return each; + VirtualFile pomFile = root.findFileByRelativePath(path.second); + if (pomFile != null) { + return pomFile; + } } } } + return null; }