diff options
author | Igor Fedorenko | 2011-09-30 15:28:27 +0000 |
---|---|---|
committer | Igor Fedorenko | 2011-09-30 15:31:17 +0000 |
commit | 716505416834234d3bba6c7d9da261c19c199155 (patch) | |
tree | b088e67f103b00a85678047daf76cb3677ed5b3b | |
parent | e2b586dc3d6628d408052e1f400d456322eed2f9 (diff) | |
download | m2e-core-716505416834234d3bba6c7d9da261c19c199155.tar.gz m2e-core-716505416834234d3bba6c7d9da261c19c199155.tar.xz m2e-core-716505416834234d3bba6c7d9da261c19c199155.zip |
Fixed testGetVersion failure when maven-core is resolved from workspce
Signed-off-by: Igor Fedorenko <igor@ifedorenko.com>
-rw-r--r-- | org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenEmbeddedRuntime.java | 48 |
1 files changed, 34 insertions, 14 deletions
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenEmbeddedRuntime.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenEmbeddedRuntime.java index a04ab521..f9f81f0d 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenEmbeddedRuntime.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenEmbeddedRuntime.java @@ -11,8 +11,11 @@ package org.eclipse.m2e.core.internal.embedder; +import java.io.BufferedInputStream; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.Arrays; @@ -43,6 +46,8 @@ import org.eclipse.osgi.service.resolver.State; import org.eclipse.osgi.service.resolver.VersionConstraint; import org.eclipse.osgi.util.ManifestElement; +import org.codehaus.plexus.util.IOUtil; + import org.eclipse.m2e.core.embedder.IMavenLauncherConfiguration; import org.eclipse.m2e.core.embedder.MavenRuntime; import org.eclipse.m2e.core.embedder.MavenRuntimeManager; @@ -56,6 +61,9 @@ import org.eclipse.m2e.core.internal.Messages; * @author Igor Fedorenko */ public class MavenEmbeddedRuntime implements MavenRuntime { + + private static final String MAVEN_CORE_POM_PROPERTIES = "META-INF/maven/org.apache.maven/maven-core/pom.properties"; //$NON-NLS-1$ + private static final Logger log = LoggerFactory.getLogger(MavenEmbeddedRuntime.class); private static final String MAVEN_MAVEN_EMBEDDER_BUNDLE_ID = "org.eclipse.m2e.maven.runtime"; //$NON-NLS-1$ @@ -276,7 +284,7 @@ public class MavenEmbeddedRuntime implements MavenRuntime { try { String mavenCoreJarPath = null; for(String path : CLASSPATH) { - if(path.contains("maven-core") && path.endsWith(".jar")) { + if(path.contains("maven-core")) { mavenCoreJarPath = path; break; } @@ -286,22 +294,34 @@ public class MavenEmbeddedRuntime implements MavenRuntime { throw new RuntimeException("Could not find maven core jar file"); } - ZipFile zip = new ZipFile(mavenCoreJarPath); - try { - ZipEntry zipEntry = zip.getEntry("META-INF/maven/org.apache.maven/maven-core/pom.properties"); //$NON-NLS-1$ - if(zipEntry != null) { - Properties pomProperties = new Properties(); - pomProperties.load(zip.getInputStream(zipEntry)); - - String version = pomProperties.getProperty("version"); //$NON-NLS-1$ - if(version != null) { - mavenVersion = version; - return mavenVersion; + Properties pomProperties = new Properties(); + + File mavenCoreJar = new File(mavenCoreJarPath); + if(mavenCoreJar.isFile()) { + ZipFile zip = new ZipFile(mavenCoreJarPath); + try { + ZipEntry zipEntry = zip.getEntry(MAVEN_CORE_POM_PROPERTIES); + if(zipEntry != null) { + pomProperties.load(zip.getInputStream(zipEntry)); } + } finally { + zip.close(); } - } finally { - zip.close(); + } else if(mavenCoreJar.isDirectory()) { + InputStream is = new BufferedInputStream(new FileInputStream(new File(mavenCoreJar, MAVEN_CORE_POM_PROPERTIES))); + try { + pomProperties.load(is); + } finally { + IOUtil.close(is); + } + } + + String version = pomProperties.getProperty("version"); //$NON-NLS-1$ + if(version != null) { + mavenVersion = version; + return mavenVersion; } + } catch(Exception e) { log.warn("Could not determine embedded maven version", e); } |