diff --git a/.github/workflows/ci-report.yml b/.github/workflows/ci-report.yml index 566c6b5e0c77..e0a6e1add3e6 100644 --- a/.github/workflows/ci-report.yml +++ b/.github/workflows/ci-report.yml @@ -21,11 +21,11 @@ jobs: with: persist-credentials: false ref: ${{ github.ref }} - - name: Set up Java 17 + - name: Set up JDK uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0 with: distribution: 'temurin' - java-version: '17' + java-version: '21' - name: Generate cache key id: cache-key diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 762469a85469..1aaf7b380605 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: build: permissions: contents: read - name: OpenJDK 17 - ${{matrix.rdbms}} + name: OpenJDK 21 - ${{matrix.rdbms}} runs-on: ubuntu-latest strategy: fail-fast: false @@ -55,11 +55,11 @@ jobs: env: RDBMS: ${{ matrix.rdbms }} run: ci/database-start.sh - - name: Set up Java 17 + - name: Set up Java 21 uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0 with: distribution: 'temurin' - java-version: '17' + java-version: '21' - name: Generate cache key id: cache-key @@ -253,11 +253,11 @@ jobs: persist-credentials: false - name: Reclaim disk space and sanitize user home run: .github/ci-prerequisites-atlas.sh - - name: Set up Java 17 + - name: Set up Java 21 uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0 with: distribution: 'temurin' - java-version: '17' + java-version: '21' - name: Generate cache key id: cache-key diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 964aeafe7eeb..c4dcfaa09b23 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -40,7 +40,7 @@ jobs: uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0 with: distribution: 'temurin' - java-version: '17' + java-version: '21' - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 diff --git a/Jenkinsfile b/Jenkinsfile index b8799520ae58..96cfdfb067f6 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -14,7 +14,7 @@ import org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper @Library('hibernate-jenkins-pipeline-helpers') _ import org.hibernate.jenkins.pipeline.helpers.job.JobHelper -@Field final String DEFAULT_JDK_VERSION = '17' +@Field final String DEFAULT_JDK_VERSION = '21' @Field final String DEFAULT_JDK_TOOL = "OpenJDK ${DEFAULT_JDK_VERSION} Latest" @Field final String NODE_PATTERN_BASE = 'Worker&&Containers' @Field List environments @@ -40,10 +40,11 @@ stage('Configure') { // Don't build with HANA by default, but only do it nightly until we receive a 3rd instance // new BuildEnvironment( dbName: 'hana_cloud', dbLockableResource: 'hana-cloud', dbLockResourceAsHost: true ), new BuildEnvironment( node: 's390x' ), + // We build with JDK 21, but produce Java 17 bytecode, so we test with JDK 17, to be sure everything works. + new BuildEnvironment( testJdkVersion: '17' ), // We want to enable preview features when testing newer builds of OpenJDK: // even if we don't use these features, just enabling them can cause side effects // and it's useful to test that. - new BuildEnvironment( testJdkVersion: '21', testJdkLauncherArgs: '--enable-preview' ), new BuildEnvironment( testJdkVersion: '23', testJdkLauncherArgs: '--enable-preview' ), new BuildEnvironment( testJdkVersion: '24', testJdkLauncherArgs: '--enable-preview' ), // The following JDKs aren't supported by Hibernate ORM out-of-the box yet: diff --git a/README.adoc b/README.adoc index 2494b776536a..040f79800676 100644 --- a/README.adoc +++ b/README.adoc @@ -21,7 +21,7 @@ for its CI needs. See == Building from sources -The build requires at least Java 11 and at most Java 17. +The build requires at least JDK 21, and produces Java 17 bytecode. Hibernate uses https://gradle.org[Gradle] as its build tool. See the _Gradle Primer_ section below if you are new to Gradle. diff --git a/ci/jpa-3.2-tck.Jenkinsfile b/ci/jpa-3.2-tck.Jenkinsfile index 0779a7eb6e8f..789b11ce3fea 100644 --- a/ci/jpa-3.2-tck.Jenkinsfile +++ b/ci/jpa-3.2-tck.Jenkinsfile @@ -22,7 +22,7 @@ else { pipeline { agent none tools { - jdk 'OpenJDK 17 Latest' + jdk 'OpenJDK 21 Latest' } options { rateLimitBuilds(throttle: [count: throttleCount, durationName: 'day', userBoost: true]) diff --git a/ci/release/Jenkinsfile b/ci/release/Jenkinsfile index b2931215db51..ffa27abf1b5d 100644 --- a/ci/release/Jenkinsfile +++ b/ci/release/Jenkinsfile @@ -70,7 +70,7 @@ pipeline { cron('0 0 * * 0') } tools { - jdk 'OpenJDK 17 Latest' + jdk 'OpenJDK 21 Latest' } options { buildDiscarder logRotator(daysToKeepStr: '30', numToKeepStr: '10') diff --git a/ci/snapshot-publish.Jenkinsfile b/ci/snapshot-publish.Jenkinsfile index 8db51e97eba5..5c8dfd2a9fd2 100644 --- a/ci/snapshot-publish.Jenkinsfile +++ b/ci/snapshot-publish.Jenkinsfile @@ -23,7 +23,7 @@ pipeline { label 'Release' } tools { - jdk 'OpenJDK 17 Latest' + jdk 'OpenJDK 21 Latest' } options { rateLimitBuilds(throttle: [count: 1, durationName: 'hour', userBoost: true]) diff --git a/gradle.properties b/gradle.properties index 70ee1d9a77bb..f2cbbad8f9c9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -27,4 +27,5 @@ org.gradle.java.installations.auto-download=false # externalized definition of JDK versions so that they are available in both Project (build.gradle) and Settings (settings.gradle) orm.jdk.base=17 -orm.jdk.max=22 \ No newline at end of file +orm.jdk.min=21 +orm.jdk.max=24 \ No newline at end of file diff --git a/hibernate-jfr/hibernate-jfr.gradle b/hibernate-jfr/hibernate-jfr.gradle index e7cd2f4a1463..9509ce7bd77d 100644 --- a/hibernate-jfr/hibernate-jfr.gradle +++ b/hibernate-jfr/hibernate-jfr.gradle @@ -16,13 +16,3 @@ dependencies { testImplementation project( ':hibernate-testing' ) testImplementation testLibs.jfrUnit } - - -// JfrUnit requires JDK 17 -compileTestJava.onlyIf{ - jdkVersions.test.release.asInt() >= 17 -} - -test.onlyIf { - jdkVersions.test.release.asInt() >= 17 -} \ No newline at end of file diff --git a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JavaModulePlugin.java b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JavaModulePlugin.java index 73840b456619..968adacc7484 100644 --- a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JavaModulePlugin.java +++ b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JavaModulePlugin.java @@ -27,6 +27,13 @@ import org.gradle.jvm.toolchain.JavaToolchainService; /** + * Retrieves JDK versions exposed by {@link JdkVersionPlugin} + * and injects them in build tasks. + * + * @see JdkVersionConfig + * @see JdkVersionSettingsPlugin + * @see JdkVersionPlugin + * * @author Steve Ebersole */ public class JavaModulePlugin implements Plugin { @@ -57,11 +64,11 @@ public void apply(Project project) { mainCompileTask.setSourceCompatibility( jdkVersionsConfig.getMainReleaseVersion().toString() ); mainCompileTask.setTargetCompatibility( jdkVersionsConfig.getMainReleaseVersion().toString() ); - testCompileTask.setSourceCompatibility( jdkVersionsConfig.getTestCompileVersion().toString() ); - testCompileTask.setTargetCompatibility( jdkVersionsConfig.getTestCompileVersion().toString() ); + testCompileTask.setSourceCompatibility( jdkVersionsConfig.getTestCompilerVersion().toString() ); + testCompileTask.setTargetCompatibility( jdkVersionsConfig.getTestCompilerVersion().toString() ); } else { - javaPluginExtension.getToolchain().getLanguageVersion().set( jdkVersionsConfig.getMainCompileVersion() ); + javaPluginExtension.getToolchain().getLanguageVersion().set( jdkVersionsConfig.getMainCompilerVersion() ); configureCompileTasks( project ); configureTestTasks( project ); @@ -72,7 +79,7 @@ public void apply(Project project) { testCompileTask.getJavaCompiler().set( toolchainService.compilerFor( javaToolchainSpec -> { - javaToolchainSpec.getLanguageVersion().set( jdkVersionsConfig.getTestCompileVersion() ); + javaToolchainSpec.getLanguageVersion().set( jdkVersionsConfig.getTestCompilerVersion() ); } ) ); if ( testTask != null ) { diff --git a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionConfig.java b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionConfig.java index 86d06819c76d..db5b0c0a940e 100644 --- a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionConfig.java +++ b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionConfig.java @@ -8,6 +8,7 @@ import java.util.Set; import org.gradle.StartParameter; +import org.gradle.api.GradleException; import org.gradle.api.Project; import org.gradle.api.initialization.Settings; import org.gradle.jvm.toolchain.JavaLanguageVersion; @@ -19,6 +20,10 @@ /** * Describes the JDK versions of interest to the Hibernate build * + * @see JdkVersionSettingsPlugin + * @see JdkVersionPlugin + * @see JavaModulePlugin + * * @author Steve Ebersole */ public class JdkVersionConfig { @@ -28,6 +33,7 @@ public class JdkVersionConfig { private final boolean explicit; private final JavaLanguageVersion baseline; + private final JavaLanguageVersion min; private final JavaLanguageVersion max; private final MainJdks main; private final TestJdks test; @@ -35,16 +41,18 @@ public class JdkVersionConfig { public JdkVersionConfig( boolean explicit, JavaLanguageVersion baseline, + JavaLanguageVersion min, JavaLanguageVersion max, - JavaLanguageVersion mainCompileVersion, + JavaLanguageVersion mainCompilerVersion, JavaLanguageVersion mainReleaseVersion, JavaLanguageVersion testCompileVersion, JavaLanguageVersion testReleaseVersion, JavaLanguageVersion testLauncherVersion) { this.explicit = explicit; this.baseline = baseline; + this.min = min; this.max = max; - this.main = new MainJdks( mainCompileVersion, mainReleaseVersion ); + this.main = new MainJdks( mainCompilerVersion, mainReleaseVersion ); this.test = new TestJdks( testCompileVersion, testReleaseVersion, testLauncherVersion ); } @@ -68,6 +76,18 @@ public JavaLanguageVersion getBaselineVersion() { return getBaseline(); } + public JavaLanguageVersion getMin() { + return min; + } + + public String getMinStr() { + return getMin().toString(); + } + + public JavaLanguageVersion getMinVersion() { + return getMin(); + } + public JavaLanguageVersion getMax() { return max; } @@ -88,16 +108,16 @@ public TestJdks getTest() { return test; } - public JavaLanguageVersion getMainCompileVersion() { - return main.getCompile(); + public JavaLanguageVersion getMainCompilerVersion() { + return main.getCompiler(); } public JavaLanguageVersion getMainReleaseVersion() { return main.getRelease(); } - public JavaLanguageVersion getTestCompileVersion() { - return test.getCompile(); + public JavaLanguageVersion getTestCompilerVersion() { + return test.getCompiler(); } public JavaLanguageVersion getTestReleaseVersion() { @@ -110,9 +130,9 @@ public JavaLanguageVersion getTestLauncherVersion() { public Set getAllVersions() { final HashSet versions = new HashSet<>(); - versions.add( getMainCompileVersion() ); + versions.add( getMainCompilerVersion() ); versions.add( getMainReleaseVersion() ); - versions.add( getTestCompileVersion() ); + versions.add( getTestCompilerVersion() ); versions.add( getTestReleaseVersion() ); versions.add( getTestLauncherVersion() ); return versions; @@ -124,40 +144,40 @@ public static JdkVersionConfig createVersionConfig( JavaLanguageVersion explicitTestVersion, JavaLanguageVersion gradleJdkVersion, JavaLanguageVersion baselineJdkVersion, + JavaLanguageVersion minSupportedJdkVersion, JavaLanguageVersion maxSupportedJdkVersion) { final boolean explicitlyConfigured = explicitMainVersion != null || explicitTestVersion != null; - final JavaLanguageVersion mainCompileVersion; + final JavaLanguageVersion mainCompilerVersion; final JavaLanguageVersion mainReleaseVersion; - final JavaLanguageVersion testCompileVersion; - final JavaLanguageVersion testReleaseVersion; + final JavaLanguageVersion testCompilerVersion; + JavaLanguageVersion testReleaseVersion; final JavaLanguageVersion testLauncherVersion; if ( explicitlyConfigured ) { - mainCompileVersion = requireNonNullElse( explicitMainVersion, baselineJdkVersion ); - testCompileVersion = requireNonNullElse( explicitTestVersion, baselineJdkVersion ); + mainCompilerVersion = requireNonNullElse( explicitMainVersion, minSupportedJdkVersion ); + testCompilerVersion = requireNonNullElse( explicitTestVersion, minSupportedJdkVersion ); mainReleaseVersion = baselineJdkVersion; - if ( testCompileVersion.asInt() > maxSupportedJdkVersion.asInt() ) { + testReleaseVersion = requireNonNullElse( explicitTestVersion, mainReleaseVersion ); + if ( testReleaseVersion.asInt() > maxSupportedJdkVersion.asInt() ) { System.out.println( - "[WARN] Gradle does not support bytecode version '" + testCompileVersion + "'." + "[WARN] Gradle does not support bytecode version '" + testReleaseVersion + "'." + " Forcing test bytecode to version " + maxSupportedJdkVersion + "." ); testReleaseVersion = maxSupportedJdkVersion; } - else { - testReleaseVersion = testCompileVersion; - } - testLauncherVersion = testCompileVersion; + testLauncherVersion = testReleaseVersion; return new JdkVersionConfig( true, baselineJdkVersion, + minSupportedJdkVersion, maxSupportedJdkVersion, - mainCompileVersion, + mainCompilerVersion, mainReleaseVersion, - testCompileVersion, + testCompilerVersion, testReleaseVersion, testLauncherVersion ); @@ -166,6 +186,11 @@ public static JdkVersionConfig createVersionConfig( // Not testing a particular JDK version: we will use the same JDK used to run Gradle. // We disable toolchains for convenience, so that anyone can just run the build with their own JDK // without any additional options and without downloading the whole JDK. + + if ( gradleJdkVersion.asInt() > minSupportedJdkVersion.asInt() ) { + throw new GradleException("This build requires at least JDK " + minSupportedJdkVersion + ", but you are using JDK " + gradleJdkVersion.asInt()); + } + if ( gradleJdkVersion.asInt() > maxSupportedJdkVersion.asInt() ) { System.out.println( "[WARN] Gradle does not support this JDK, because it is too recent; build is likely to fail." @@ -180,6 +205,7 @@ public static JdkVersionConfig createVersionConfig( return new JdkVersionConfig( false, baselineJdkVersion, + minSupportedJdkVersion, maxSupportedJdkVersion, gradleJdkVersion, baselineJdkVersion, @@ -219,25 +245,17 @@ public static JavaLanguageVersion extractVersion(Project project, String propert return null; } - - - public static class MainJdks implements JdkVersionCombo { - private final JavaLanguageVersion compileVersion; + private final JavaLanguageVersion compilerVersion; private final JavaLanguageVersion releaseVersion; - public MainJdks(JavaLanguageVersion compileVersion, JavaLanguageVersion releaseVersion) { - this.compileVersion = compileVersion; + public MainJdks(JavaLanguageVersion compilerVersion, JavaLanguageVersion releaseVersion) { + this.compilerVersion = compilerVersion; this.releaseVersion = releaseVersion; } - @Override - public JavaLanguageVersion getCompile() { - return compileVersion; - } - public JavaLanguageVersion getCompiler() { - return compileVersion; + return compilerVersion; } @Override @@ -247,31 +265,27 @@ public JavaLanguageVersion getRelease() { @Override public String toString() { - return "[compile: " + compileVersion + ", release:" + releaseVersion + "]"; + return "[compiler: " + compilerVersion + ", release:" + releaseVersion + "]"; } } public static class TestJdks implements JdkVersionCombo { - private final JavaLanguageVersion compileVersion; + private final JavaLanguageVersion compilerVersion; private final JavaLanguageVersion releaseVersion; private final JavaLanguageVersion launcherVersion; public TestJdks( - JavaLanguageVersion compileVersion, + JavaLanguageVersion compilerVersion, JavaLanguageVersion releaseVersion, JavaLanguageVersion launcherVersion) { - this.compileVersion = compileVersion; + this.compilerVersion = compilerVersion; this.releaseVersion = releaseVersion; this.launcherVersion = launcherVersion; } - public JavaLanguageVersion getCompiler() { - return compileVersion; - } - @Override - public JavaLanguageVersion getCompile() { - return compileVersion; + public JavaLanguageVersion getCompiler() { + return compilerVersion; } @Override @@ -285,12 +299,12 @@ public JavaLanguageVersion getLauncher() { @Override public String toString() { - return "[compile: " + compileVersion + ", release:" + releaseVersion + ", launcher: " + launcherVersion + "]"; + return "[compiler: " + compilerVersion + ", release:" + releaseVersion + ", launcher: " + launcherVersion + "]"; } } public interface JdkVersionCombo { - JavaLanguageVersion getCompile(); + JavaLanguageVersion getCompiler(); JavaLanguageVersion getRelease(); } } diff --git a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionPlugin.java b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionPlugin.java index 6ffe02cdd9fc..9ee88360e087 100644 --- a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionPlugin.java +++ b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionPlugin.java @@ -23,6 +23,13 @@ import static org.hibernate.orm.toolchains.JdkVersionConfig.extractVersion; /** + * Gathers JDK versions of interest from settings and exposes them to later phases of the build + * than {@link JdkVersionSettingsPlugin}. + * + * @see JdkVersionConfig + * @see JdkVersionSettingsPlugin + * @see JavaModulePlugin + * * @author Steve Ebersole */ public class JdkVersionPlugin implements Plugin { @@ -42,6 +49,7 @@ public void apply(Project project) { final VersionCatalogsExtension versionCatalogs = project.getExtensions().getByType( VersionCatalogsExtension.class ); final VersionCatalog jdkVersions = versionCatalogs.named( "jdks" ); final JavaLanguageVersion baselineJdkVersion = getJavaLanguageVersion( jdkVersions, "baseline" ); + final JavaLanguageVersion minSupportedJdkVersion = getJavaLanguageVersion( jdkVersions, "minSupportedJdk" ); final JavaLanguageVersion maxSupportedJdkVersion = getJavaLanguageVersion( jdkVersions, "maxSupportedBytecode" ); final JdkVersionConfig jdkVersionConfig = createVersionConfig( @@ -49,11 +57,11 @@ public void apply(Project project) { explicitTestVersion, gradleJdkVersion, baselineJdkVersion, + minSupportedJdkVersion, maxSupportedJdkVersion ); project.getExtensions().add( JdkVersionConfig.DSL_NAME, jdkVersionConfig ); - JdkVersionsLogging.logVersions( jdkVersionConfig ); } @NotNull diff --git a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionSettingsPlugin.java b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionSettingsPlugin.java index 8e5825d7097f..4fa112b9bcd4 100644 --- a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionSettingsPlugin.java +++ b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionSettingsPlugin.java @@ -5,11 +5,12 @@ package org.hibernate.orm.toolchains; import org.gradle.StartParameter; +import org.gradle.api.Action; import org.gradle.api.JavaVersion; import org.gradle.api.Plugin; import org.gradle.api.initialization.Settings; +import org.gradle.api.invocation.Gradle; import org.gradle.jvm.toolchain.JavaLanguageVersion; - import org.jetbrains.annotations.NotNull; import static org.hibernate.orm.toolchains.JdkVersionConfig.MAIN_JDK_VERSION; @@ -18,6 +19,13 @@ import static org.hibernate.orm.toolchains.JdkVersionConfig.extractVersion; /** + * Gathers JDK versions of interest from settings and exposes them to earlier phases of the build + * than {@link JdkVersionPlugin}. + * + * @see JdkVersionConfig + * @see JdkVersionPlugin + * @see JavaModulePlugin + * * @author Steve Ebersole */ public class JdkVersionSettingsPlugin implements Plugin { @@ -28,6 +36,7 @@ public void apply(Settings settings) { final JavaLanguageVersion gradleJdkVersion = JavaLanguageVersion.of( JavaVersion.current().getMajorVersion() ); final JavaLanguageVersion baselineJdkVersion = getJavaLanguageVersion( settings, "orm.jdk.base" ); + final JavaLanguageVersion minSupportedJdkVersion = getJavaLanguageVersion( settings, "orm.jdk.min" ); final JavaLanguageVersion maxSupportedJdkVersion = getJavaLanguageVersion( settings, "orm.jdk.max" ); final JdkVersionConfig jdkVersionConfig = createVersionConfig( @@ -35,12 +44,30 @@ public void apply(Settings settings) { explicitTestVersion, gradleJdkVersion, baselineJdkVersion, + minSupportedJdkVersion, maxSupportedJdkVersion ); settings.getGradle().getExtensions().add( JdkVersionConfig.DSL_NAME, jdkVersionConfig ); settings.getExtensions().add( JdkVersionConfig.DSL_NAME, jdkVersionConfig ); - JdkVersionsLogging.logVersions( jdkVersionConfig ); + + // Log version information at the start of every build. + // `projectsLoaded` allows us to bypass the Gradle cache, and we want that. + settings.getGradle().projectsLoaded( new Action() { + @Override + public void execute(Gradle gradle) { + final String implicitExplicitString = jdkVersionConfig.isExplicit() ? "explicit" : "implicit"; + + System.out.println( + "Java versions for main code: " + jdkVersionConfig.getMain() + + " (" + implicitExplicitString + ")" + ); + System.out.println( + "Java versions for test code: " + jdkVersionConfig.getTest() + + " (" + implicitExplicitString + ")" + ); + } + } ); } @NotNull @@ -56,6 +83,12 @@ private JavaLanguageVersion getJavaLanguageVersion(Settings settings, String nam return JavaLanguageVersion.of( fromProjProp ); } + // This extracts info from gradle.properties + final String fromGradleProp = settings.getProviders().gradleProperty( name ).getOrNull(); + if ( fromGradleProp != null && !fromGradleProp.isEmpty() ) { + return JavaLanguageVersion.of( fromGradleProp ); + } + return JavaLanguageVersion.of( JavaVersion.current().getMajorVersion() ); } } diff --git a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionsLogging.java b/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionsLogging.java deleted file mode 100644 index a56b3d3f0fef..000000000000 --- a/local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionsLogging.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.orm.toolchains; - -/** - * @author Steve Ebersole - */ -public class JdkVersionsLogging { - private static boolean logged = false; - - public static void logVersions(JdkVersionConfig jdkVersionConfig) { - if ( logged ) { - return; - } - - logged = true; - - final String implicitExplicitString = jdkVersionConfig.isExplicit() ? "explicit" : "implicit"; - - System.out.println( - "Java versions for main code: " + jdkVersionConfig.getMain() - + " (" + implicitExplicitString + ")" - ); - System.out.println( - "Java versions for test code: " + jdkVersionConfig.getTest() - + " (" + implicitExplicitString + ")" - ); - } - - public static void logOnce(String message) { - if ( logged ) { - return; - } - - logged = true; - - System.out.println( message ); - } -} diff --git a/nightly.Jenkinsfile b/nightly.Jenkinsfile index 5a5265eaa43a..857b03a49c3b 100644 --- a/nightly.Jenkinsfile +++ b/nightly.Jenkinsfile @@ -14,7 +14,7 @@ import org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper @Library('hibernate-jenkins-pipeline-helpers') _ import org.hibernate.jenkins.pipeline.helpers.job.JobHelper -@Field final String DEFAULT_JDK_VERSION = '17' +@Field final String DEFAULT_JDK_VERSION = '21' @Field final String DEFAULT_JDK_TOOL = "OpenJDK ${DEFAULT_JDK_VERSION} Latest" @Field final String NODE_PATTERN_BASE = 'Worker&&Containers' @Field List environments diff --git a/settings.gradle b/settings.gradle index ed32f50af7b4..395cc9ace88f 100644 --- a/settings.gradle +++ b/settings.gradle @@ -59,12 +59,15 @@ dependencyResolutionManagement { jdks { // see gradle.properties (or set with -D/-P) var String baseJdk = jdkVersions.baseline + var String minJdk = jdkVersions.min var String maxJdk = jdkVersions.max version "baseline", baseJdk version "compatible", "17 or 21" version "jdbc", "4.2" // Bundled with JDK 11 + // We may require a minimum JDK version, for consistency across builds + version "minSupportedJdk", minJdk // Gradle does bytecode transformation on tests. // You can't use bytecode higher than what Gradle supports, even with toolchains. version "maxSupportedBytecode", maxJdk