Index: build.xml =================================================================== --- build.xml (revision 18400) +++ build.xml (working copy) @@ -471,14 +471,14 @@ - - + Index: src/main/groovy/ui/GroovyMain.java =================================================================== --- src/main/groovy/ui/GroovyMain.java (revision 18400) +++ src/main/groovy/ui/GroovyMain.java (working copy) @@ -16,6 +16,7 @@ package groovy.ui; import groovy.lang.GroovyShell; +import groovy.lang.GroovySystem; import groovy.lang.Script; import java.io.*; @@ -32,7 +33,6 @@ import org.apache.commons.cli.PosixParser; import org.codehaus.groovy.control.CompilationFailedException; import org.codehaus.groovy.control.CompilerConfiguration; -import org.codehaus.groovy.runtime.InvokerHelper; import org.codehaus.groovy.runtime.InvokerInvocationException; import org.codehaus.groovy.runtime.DefaultGroovyMethods; @@ -104,7 +104,7 @@ if (cmd.hasOption('h')) { printHelp(out, options); } else if (cmd.hasOption('v')) { - String version = InvokerHelper.getVersion(); + String version = GroovySystem.getVersion(); out.println("Groovy Version: " + version + " JVM: " + System.getProperty("java.version")); } else { // If we fail, then exit with an error so scripting frameworks can catch it Index: src/main/groovy/ui/InteractiveShell.java =================================================================== --- src/main/groovy/ui/InteractiveShell.java (revision 18400) +++ src/main/groovy/ui/InteractiveShell.java (working copy) @@ -19,11 +19,12 @@ import groovy.lang.Binding; import groovy.lang.Closure; import groovy.lang.GroovyShell; +import groovy.lang.GroovySystem; + import org.codehaus.groovy.tools.shell.util.MessageSource; import org.codehaus.groovy.control.CompilationFailedException; import org.codehaus.groovy.control.SourceUnit; -import org.codehaus.groovy.runtime.InvokerHelper; import org.codehaus.groovy.runtime.InvokerInvocationException; import org.codehaus.groovy.runtime.DefaultGroovyMethods; import org.codehaus.groovy.tools.ErrorReporter; @@ -160,7 +161,7 @@ } if (line.hasOption('V')) { - writer.println(MESSAGES.format("cli.info.version", new Object[] { InvokerHelper.getVersion() })); + writer.println(MESSAGES.format("cli.info.version", new Object[] { GroovySystem.getVersion() })); writer.flush(); System.exit(0); } @@ -255,7 +256,7 @@ */ public void run() { // Display the startup banner - out.println(MESSAGES.format("startup_banner.0", new Object[] { InvokerHelper.getVersion(), System.getProperty("java.version") })); + out.println(MESSAGES.format("startup_banner.0", new Object[] { GroovySystem.getVersion(), System.getProperty("java.version") })); out.println(MESSAGES.getMessage("startup_banner.1")); while (true) { Index: src/main/META-INF/groovy-release-info.properties =================================================================== --- src/main/META-INF/groovy-release-info.properties (revision 0) +++ src/main/META-INF/groovy-release-info.properties (revision 0) @@ -0,0 +1,4 @@ +ImplementationVersion=##ImplementationVersion## +BundleVersion=##BundleVersion## +BuildDate=##BuildDate## +BuildTime=##BuildTime## \ No newline at end of file Index: src/main/org/codehaus/groovy/jsr223/GroovyScriptEngineFactory.java =================================================================== --- src/main/org/codehaus/groovy/jsr223/GroovyScriptEngineFactory.java (revision 18400) +++ src/main/org/codehaus/groovy/jsr223/GroovyScriptEngineFactory.java (working copy) @@ -24,7 +24,7 @@ package org.codehaus.groovy.jsr223; -import org.codehaus.groovy.runtime.InvokerHelper; +import groovy.lang.GroovySystem; import javax.script.ScriptEngine; import javax.script.ScriptEngineFactory; @@ -71,7 +71,7 @@ } public String getLanguageVersion() { - return InvokerHelper.getVersion(); + return GroovySystem.getVersion(); } public List getExtensions() { @@ -97,7 +97,7 @@ } else if (ScriptEngine.LANGUAGE.equals(key)) { return LANGUAGE_NAME; } else if (ScriptEngine.LANGUAGE_VERSION.equals(key)) { - return InvokerHelper.getVersion(); + return GroovySystem.getVersion(); } else if ("THREADING".equals(key)) { return "MULTITHREADED"; } else { Index: src/main/org/codehaus/groovy/tools/FileSystemCompiler.java =================================================================== --- src/main/org/codehaus/groovy/tools/FileSystemCompiler.java (revision 18400) +++ src/main/org/codehaus/groovy/tools/FileSystemCompiler.java (working copy) @@ -20,9 +20,10 @@ import org.codehaus.groovy.control.CompilationUnit; import org.codehaus.groovy.control.CompilerConfiguration; import org.codehaus.groovy.control.ConfigurationException; -import org.codehaus.groovy.runtime.InvokerHelper; import org.codehaus.groovy.tools.javac.JavaAwareCompilationUnit; +import groovy.lang.GroovySystem; + import java.io.BufferedReader; import java.io.File; import java.io.FileReader; @@ -67,7 +68,7 @@ } public static void displayVersion() { - String version = InvokerHelper.getVersion(); + String version = GroovySystem.getVersion(); System.err.println("Groovy compiler version " + version); System.err.println("Copyright 2003-2009 The Codehaus. http://groovy.codehaus.org/"); System.err.println(""); Index: src/main/org/codehaus/groovy/util/ReleaseInfo.java =================================================================== --- src/main/org/codehaus/groovy/util/ReleaseInfo.java (revision 18400) +++ src/main/org/codehaus/groovy/util/ReleaseInfo.java (working copy) @@ -2,6 +2,8 @@ import java.io.IOException; import java.io.InputStream; +import java.net.URL; +import java.net.URLClassLoader; import java.util.Properties; /** @@ -11,7 +13,7 @@ */ public class ReleaseInfo { private static Properties releaseInfo = new Properties(); - private static String RELEASE_INFO_FILE = "META-INF/release-info.properties"; + private static String RELEASE_INFO_FILE = "META-INF/groovy-release-info.properties"; private static String KEY_IMPLEMENTATION_VERSION = "ImplementationVersion"; private static String KEY_BUNDLE_VERSION = "BundleVersion"; private static String KEY_BUILD_DATE = "BuildDate"; @@ -35,13 +37,22 @@ private static void loadInfo() { if(!loaded) { - InputStream is = ReleaseInfo.class.getClassLoader().getResourceAsStream(RELEASE_INFO_FILE); - if(is != null) { - try { + URL url = null; + ClassLoader cl = ReleaseInfo.class.getClassLoader(); + if(cl instanceof URLClassLoader) { + // this avoids going through the parent classloaders/bootstarp + url = ((URLClassLoader) cl).findResource(RELEASE_INFO_FILE); + } else { + // fallback option as ClassLoader#findResource() is protected + url = cl.getResource(RELEASE_INFO_FILE); + } + try { + InputStream is = url.openStream(); + if(is != null) { releaseInfo.load(is); - } catch(IOException ioex) { - // ignore. In case of some exception, release info is not available } + } catch(IOException ioex) { + // ignore. In case of some exception, release info is not available } loaded = true; }