diff --git a/build.gradle b/build.gradle index ef97c00..1612fc0 100644 --- a/build.gradle +++ b/build.gradle @@ -8,13 +8,15 @@ dependencies { task copyToWrapperDir(type: Copy) { description 'Copies the Groovy wrapper binary to its runtime home with the Graddle wrapper' - from "$buildDir/libs/groovy-wrapper.jar" + dependsOn build + from jar into 'gradle/wrapper' + rename "-${version}", "" } task distZip(type: Zip) { description 'Makes a zip file containing just the Groovy wrapper binary and scripts' - dependsOn build + dependsOn copyToWrapperDir from 'gradle/wrapper/groovy-wrapper.jar' from 'groovyw' from 'groovyw.bat' diff --git a/gradle/wrapper/groovy-wrapper.jar b/gradle/wrapper/groovy-wrapper.jar index 2941449..77874b9 100644 Binary files a/gradle/wrapper/groovy-wrapper.jar and b/gradle/wrapper/groovy-wrapper.jar differ diff --git a/src/main/java/org/gradle/wrapper/GroovyBootstrapMainStarter.java b/src/main/java/org/gradle/wrapper/GroovyBootstrapMainStarter.java index c01fcec..a72286c 100644 --- a/src/main/java/org/gradle/wrapper/GroovyBootstrapMainStarter.java +++ b/src/main/java/org/gradle/wrapper/GroovyBootstrapMainStarter.java @@ -25,7 +25,8 @@ public class GroovyBootstrapMainStarter extends BootstrapMainStarter { @Override public void start(String[] args, File gradleHome) throws Exception { File groovyJar = findGroovyJar(gradleHome); - URLClassLoader contextClassLoader = new URLClassLoader(new URL[]{groovyJar.toURI().toURL()}, ClassLoader.getSystemClassLoader().getParent()); + File ivyJar = findIvyJar(gradleHome); + URLClassLoader contextClassLoader = new URLClassLoader(new URL[]{groovyJar.toURI().toURL(),ivyJar.toURI().toURL()}, ClassLoader.getSystemClassLoader().getParent()); Thread.currentThread().setContextClassLoader(contextClassLoader); Class mainClass = contextClassLoader.loadClass("groovy.ui.GroovyMain"); Method mainMethod = mainClass.getMethod("main", String[].class); @@ -43,4 +44,13 @@ private File findGroovyJar(File gradleHome) { } throw new RuntimeException(String.format("Could not locate the Groovy JAR in Gradle distribution '%s'.", gradleHome)); } + + private File findIvyJar(File gradleHome) { + for (File file : new File(gradleHome, "lib/plugins").listFiles()) { + if (file.getName().matches("ivy-.*\\.jar")) { + return file; + } + } + throw new RuntimeException(String.format("Could not locate the Ivy JAR in Gradle distribution '%s'.", gradleHome)); + } }