diff --git a/bramble-api/build.gradle b/bramble-api/build.gradle index e1d90cdd6d2d5f9456c9cde66b584cf441717c74..7b03f5c18869fbec6f3cb67dfecfefedc322bcec 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 abc388449c0f2a42a8eb18e37e068d3d1f9b31ea..324947821de08c852c3e62026dca211f5da32ebb 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 29f9f9aa797309839bdd2a334b3da41f9da017fe..0c6e6e1d76eb9f2fb09e49380b7f13ce8f83945b 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 efbdf0a2af60ac5d857b97bd306a26a2813e6594..a4dddb5a2a42283349038d3849544f0a21fefb4d 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 9de3d091bd9bac46b2940bfef27d81aefbb8af55..fc55df933a7eaf39d2540692465b98e6cb98b218 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 '**/*' +}