diff --git a/bramble-api/build.gradle b/bramble-api/build.gradle index e1d90cdd6..7b03f5c18 100644 --- a/bramble-api/build.gradle +++ b/bramble-api/build.gradle @@ -38,10 +38,5 @@ artifacts { // If a Java 6 JRE is available, check we're not using any Java 7 or 8 APIs tasks.withType(JavaCompile) { - doFirst { - def home = System.env.JAVA_6_HOME; - if (home != null && !home.isEmpty()) { - options.bootstrapClasspath = files("${home}/jre/lib/rt.jar", "${home}/jre/lib/jsse.jar") - } - } + useJava6StandardLibrary(it) } diff --git a/bramble-core/build.gradle b/bramble-core/build.gradle index abc388449..324947821 100644 --- a/bramble-core/build.gradle +++ b/bramble-core/build.gradle @@ -41,10 +41,5 @@ artifacts { // If a Java 6 JRE is available, check we're not using any Java 7 or 8 APIs tasks.withType(JavaCompile) { - doFirst { - def home = System.env.JAVA_6_HOME; - if (home != null && !home.isEmpty()) { - options.bootstrapClasspath = files("${home}/jre/lib/rt.jar", "${home}/jre/lib/jsse.jar") - } - } + useJava6StandardLibrary(it) } diff --git a/briar-api/build.gradle b/briar-api/build.gradle index 29f9f9aa7..0c6e6e1d7 100644 --- a/briar-api/build.gradle +++ b/briar-api/build.gradle @@ -8,10 +8,5 @@ dependencies { // If a Java 6 JRE is available, check we're not using any Java 7 or 8 APIs tasks.withType(JavaCompile) { - doFirst { - def home = System.env.JAVA_6_HOME; - if (home != null && !home.isEmpty()) { - options.bootstrapClasspath = files("${home}/jre/lib/rt.jar", "${home}/jre/lib/jsse.jar") - } - } + useJava6StandardLibrary(it) } diff --git a/briar-core/build.gradle b/briar-core/build.gradle index efbdf0a2a..a4dddb5a2 100644 --- a/briar-core/build.gradle +++ b/briar-core/build.gradle @@ -36,10 +36,5 @@ dependencyVerification { // If a Java 6 JRE is available, check we're not using any Java 7 or 8 APIs tasks.withType(JavaCompile) { - doFirst { - def home = System.env.JAVA_6_HOME; - if (home != null && !home.isEmpty()) { - options.bootstrapClasspath = files("${home}/jre/lib/rt.jar", "${home}/jre/lib/jsse.jar") - } - } + useJava6StandardLibrary(it) } diff --git a/build.gradle b/build.gradle index 9de3d091b..fc55df933 100644 --- a/build.gradle +++ b/build.gradle @@ -24,3 +24,27 @@ buildscript { classpath files('libs/gradle-witness.jar') } } + +// If a Java 6 JRE is available, check we're not using any Java 7 or 8 APIs +ext.useJava6StandardLibrary = { task -> + def home = System.env.JAVA_6_HOME; + if (home != null && !home.isEmpty()) { + println "Setting Java 6 bootstrap classpath for ${task.name}" + task.dependsOn createJavaLangInvokeJar + task.options.bootstrapClasspath = files( + "${project.rootDir}/build/invoke.jar", + "${home}/jre/lib/rt.jar", + "${home}/jre/lib/jsse.jar" + ) + } +} + +// Create a jar containing the java.lang.invoke classes for the Java 6 bootstrap classpath +task createJavaLangInvokeJar(type: Zip) { + archiveName 'invoke.jar' + destinationDir file("${project.rootDir}/build") + from zipTree("${System.getProperty('java.home')}/lib/rt.jar").matching { + include 'java/lang/invoke/*' + } + include '**/*' +}