diff --git a/lib/java/build.gradle b/lib/java/build.gradle index 9184f7b97e3..57a8e1e26f5 100644 --- a/lib/java/build.gradle +++ b/lib/java/build.gradle @@ -19,6 +19,11 @@ // Using the legacy plugin classpath for Clover so it can be loaded optionally buildscript { + // strictly enforce the minimum version of Java required to build and fail fast + if (JavaVersion.current() < JavaVersion.VERSION_1_8) { + throw new GradleException("The java version used is ${JavaVersion.current()}, but must be at least ${JavaVersion.VERSION_1_8}") + } + repositories { mavenCentral() google() diff --git a/lib/java/gradle/sourceConfiguration.gradle b/lib/java/gradle/sourceConfiguration.gradle index 07c2a7f1f77..d15c1179f30 100644 --- a/lib/java/gradle/sourceConfiguration.gradle +++ b/lib/java/gradle/sourceConfiguration.gradle @@ -46,6 +46,9 @@ sourceSets { // ---------------------------------------------------------------------------- // Compiler configuration details +// These two properties are still needed on JDK8, and possibly used directly by +// plugins. However, the '--release' option added below makes these two +// properties redundant when building with JDK9 or later. sourceCompatibility = '1.8' targetCompatibility = '1.8' @@ -53,6 +56,10 @@ tasks.withType(JavaCompile) { options.encoding = 'UTF-8' options.debug = true options.deprecation = true + // the following is to build with Java 8 specifications, even when building with JDK9 or later + if (JavaVersion.current() > JavaVersion.VERSION_1_8) { + options.compilerArgs.addAll(['--release', '8']) + } // options.compilerArgs.addAll('-Xlint:unchecked') }