Browse Source

Compile subset of build-tools classes with Java 8 target compatibility (#43177)

Mark Vieira 6 years ago
parent
commit
ec3ac9b624

+ 29 - 6
buildSrc/build.gradle

@@ -67,8 +67,26 @@ if (JavaVersion.current() < JavaVersion.VERSION_11) {
 }
 
 // Keep compatibility with Java 8 for external users of build-tools that haven't migrated to Java 11
-targetCompatibility = '8'
-sourceCompatibility = '8'
+targetCompatibility = '11'
+sourceCompatibility = '11'
+
+sourceSets {
+    // We have a few classes that need to be compiled for older java versions
+    minimumRuntime { }
+}
+
+compileMinimumRuntimeJava {
+    targetCompatibility = 8
+    sourceCompatibility = 8
+}
+
+jar {
+    from sourceSets.minimumRuntime.output
+}
+
+javadoc {
+    source sourceSets.minimumRuntime.allSource
+}
 
 /*****************************************************************************
  *                    Dependencies used by the entire build                  *
@@ -79,6 +97,11 @@ repositories {
 }
 
 dependencies {
+  if (project.ext.has("isEclipse") == false || project.ext.isEclipse == false) {
+    // eclipse is confused if this is set explicitly
+    compile sourceSets.minimumRuntime.output
+  }
+
   compile localGroovy()
   
   compile 'commons-codec:commons-codec:1.12'
@@ -96,6 +119,9 @@ dependencies {
   testCompile "junit:junit:${props.getProperty('junit')}"
   testCompile "com.carrotsearch.randomizedtesting:randomizedtesting-runner:${props.getProperty('randomizedrunner')}"
   testCompile 'com.github.tomakehurst:wiremock-jre8-standalone:2.23.2'
+  minimumRuntimeCompile "junit:junit:${props.getProperty('junit')}"
+  minimumRuntimeCompile localGroovy()
+  minimumRuntimeCompile gradleApi()
 }
 
 /*****************************************************************************
@@ -123,10 +149,6 @@ if (project != rootProject) {
   apply plugin: 'nebula.maven-base-publish'
   apply plugin: 'nebula.maven-scm'
 
-  // we need to apply these again to override the build plugin
-  targetCompatibility = "10"
-  sourceCompatibility = "10"
-
   // groovydoc succeeds, but has some weird internal exception...
   groovydoc.enabled = false
 
@@ -134,6 +156,7 @@ if (project != rootProject) {
   dependencyLicenses.enabled = false
   dependenciesInfo.enabled = false
   forbiddenApisMain.enabled = false
+  forbiddenApisMinimumRuntime.enabled = false
   forbiddenApisTest.enabled = false
   jarHell.enabled = false
   thirdPartyAudit.enabled = false

+ 0 - 0
buildSrc/src/main/java/org/elasticsearch/gradle/JdkJarHellCheck.java → buildSrc/src/minimumRuntime/java/org/elasticsearch/gradle/JdkJarHellCheck.java


+ 0 - 0
buildSrc/src/main/java/org/elasticsearch/gradle/LazyFileOutputStream.java → buildSrc/src/minimumRuntime/java/org/elasticsearch/gradle/LazyFileOutputStream.java


+ 7 - 2
buildSrc/src/main/java/org/elasticsearch/gradle/LoggedExec.java → buildSrc/src/minimumRuntime/java/org/elasticsearch/gradle/LoggedExec.java

@@ -17,7 +17,6 @@ import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.UnsupportedEncodingException;
-import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.util.function.Consumer;
 import java.util.function.Function;
@@ -79,7 +78,13 @@ public class LoggedExec extends Exec {
             };
         } else {
             out = new ByteArrayOutputStream();
-            outputLogger = logger -> logger.error(((ByteArrayOutputStream) out).toString(StandardCharsets.UTF_8));
+            outputLogger = logger -> {
+                try {
+                    logger.error(((ByteArrayOutputStream) out).toString("UTF-8"));
+                } catch (UnsupportedEncodingException e) {
+                    throw new RuntimeException(e);
+                }
+            };
         }
         setStandardOutput(out);
         setErrorOutput(out);

+ 0 - 0
buildSrc/src/main/java/org/elasticsearch/gradle/Version.java → buildSrc/src/minimumRuntime/java/org/elasticsearch/gradle/Version.java


+ 0 - 0
buildSrc/src/main/java/org/elasticsearch/gradle/VersionProperties.java → buildSrc/src/minimumRuntime/java/org/elasticsearch/gradle/VersionProperties.java