diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 9ae86a661cea2..4e31de08829cc 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -16,8 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - - import java.nio.file.Files plugins { @@ -41,6 +39,12 @@ if (project == rootProject) { buildDir = 'build-bootstrap' } +// Make sure :buildSrc: doesn't generate classes incompatible with RUNTIME_JAVA_HOME +// We can't use BuildPlugin here, so read from file +String minimumRuntimeVersion = file('src/main/resources/minimumRuntimeVersion').text.trim() +targetCompatibility = minimumRuntimeVersion +sourceCompatibility = minimumRuntimeVersion + /***************************************************************************** * Propagating version.properties to the rest of the build * *****************************************************************************/ diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy index 8a2b1b798e163..79f0c744c10bd 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy @@ -19,7 +19,6 @@ package org.elasticsearch.gradle import com.carrotsearch.gradle.junit4.RandomizedTestingTask -import nebula.plugin.extraconfigurations.ProvidedBasePlugin import org.apache.tools.ant.taskdefs.condition.Os import org.eclipse.jgit.lib.Constants import org.eclipse.jgit.lib.RepositoryBuilder @@ -58,9 +57,6 @@ import java.time.ZonedDateTime */ class BuildPlugin implements Plugin { - static final JavaVersion minimumRuntimeVersion = JavaVersion.VERSION_1_8 - static final JavaVersion minimumCompilerVersion = JavaVersion.VERSION_1_10 - @Override void apply(Project project) { if (project.pluginManager.hasPlugin('elasticsearch.standalone-rest-test')) { @@ -95,6 +91,12 @@ class BuildPlugin implements Plugin { /** Performs checks on the build environment and prints information about the build environment. */ static void globalBuildInfo(Project project) { if (project.rootProject.ext.has('buildChecksDone') == false) { + JavaVersion minimumRuntimeVersion = JavaVersion.toVersion( + BuildPlugin.class.getClassLoader().getResourceAsStream("minimumRuntimeVersion").text.trim() + ) + JavaVersion minimumCompilerVersion = JavaVersion.toVersion( + BuildPlugin.class.getClassLoader().getResourceAsStream("minimumCompilerVersion").text.trim() + ) String compilerJavaHome = findCompilerJavaHome() String runtimeJavaHome = findRuntimeJavaHome(compilerJavaHome) File gradleJavaHome = Jvm.current().javaHome @@ -192,10 +194,12 @@ class BuildPlugin implements Plugin { project.rootProject.ext.runtimeJavaVersion = runtimeJavaVersionEnum project.rootProject.ext.javaVersions = javaVersions project.rootProject.ext.buildChecksDone = true + project.rootProject.ext.minimumCompilerVersion = minimumCompilerVersion + project.rootProject.ext.minimumRuntimeVersion = minimumRuntimeVersion } - project.targetCompatibility = minimumRuntimeVersion - project.sourceCompatibility = minimumRuntimeVersion + project.targetCompatibility = project.rootProject.ext.minimumRuntimeVersion + project.sourceCompatibility = project.rootProject.ext.minimumRuntimeVersion // set java home for each project, so they dont have to find it in the root project project.ext.compilerJavaHome = project.rootProject.ext.compilerJavaHome @@ -348,7 +352,7 @@ class BuildPlugin implements Plugin { // just a self contained test-fixture configuration, likely transitive and hellacious return } - configuration.resolutionStrategy { + configuration.resolutionStrategy { failOnVersionConflict() } }) diff --git a/buildSrc/src/main/resources/minimumCompilerVersion b/buildSrc/src/main/resources/minimumCompilerVersion new file mode 100644 index 0000000000000..578c71bd55827 --- /dev/null +++ b/buildSrc/src/main/resources/minimumCompilerVersion @@ -0,0 +1 @@ +1.10 \ No newline at end of file diff --git a/buildSrc/src/main/resources/minimumRuntimeVersion b/buildSrc/src/main/resources/minimumRuntimeVersion new file mode 100644 index 0000000000000..468437494697b --- /dev/null +++ b/buildSrc/src/main/resources/minimumRuntimeVersion @@ -0,0 +1 @@ +1.8 \ No newline at end of file diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/precommit/NamingConventionsTaskIT.java b/buildSrc/src/test/java/org/elasticsearch/gradle/precommit/NamingConventionsTaskIT.java index a8bc0ea878be0..7e469e8597ddd 100644 --- a/buildSrc/src/test/java/org/elasticsearch/gradle/precommit/NamingConventionsTaskIT.java +++ b/buildSrc/src/test/java/org/elasticsearch/gradle/precommit/NamingConventionsTaskIT.java @@ -4,7 +4,6 @@ import org.gradle.testkit.runner.BuildResult; import org.gradle.testkit.runner.GradleRunner; import org.gradle.testkit.runner.TaskOutcome; -import org.junit.Ignore; import java.util.Arrays; @@ -22,7 +21,6 @@ public void testPluginCanBeApplied() { assertTrue(output, output.contains("build plugin can be applied")); } - @Ignore("AwaitsFix : https://github.com/elastic/elasticsearch/issues/31665") public void testNameCheckFailsAsItShould() { BuildResult result = GradleRunner.create() .withProjectDir(getProjectDir("namingConventionsSelfTest")) @@ -48,7 +46,6 @@ public void testNameCheckFailsAsItShould() { } } - @Ignore("AwaitsFix : https://github.com/elastic/elasticsearch/issues/31665") public void testNameCheckFailsAsItShouldWithMain() { BuildResult result = GradleRunner.create() .withProjectDir(getProjectDir("namingConventionsSelfTest"))