Skip to content

Commit 866ba85

Browse files
committed
Improve handling of JDK versions
1 parent f739fb0 commit 866ba85

File tree

4 files changed

+51
-22
lines changed

4 files changed

+51
-22
lines changed

gradle.properties

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,7 @@ org.gradle.java.installations.auto-detect=false
2222
# We can't rely on Gradle's auto-download of JDKs as it doesn't support EA releases.
2323
# See https://github.com/gradle/gradle/blob/fc7ea24f3c525d8d12a4346eb0f15976a6be9414/subprojects/platform-jvm/src/main/java/org/gradle/jvm/toolchain/install/internal/AdoptOpenJdkRemoteBinary.java#L114
2424
org.gradle.java.installations.auto-download=false
25+
26+
# externalized definition of JDK versions so that they are available in both Project (build.gradle) and Settings (settings.gradle)
27+
orm.jdk.base=17
28+
orm.jdk.max=22

local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionConfig.java

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,22 @@ public class JdkVersionConfig {
3333

3434
private final boolean explicit;
3535
private final JavaLanguageVersion baseline;
36+
private final JavaLanguageVersion max;
3637
private final MainJdks main;
3738
private final TestJdks test;
3839

3940
public JdkVersionConfig(
4041
boolean explicit,
4142
JavaLanguageVersion baseline,
43+
JavaLanguageVersion max,
4244
JavaLanguageVersion mainCompileVersion,
4345
JavaLanguageVersion mainReleaseVersion,
4446
JavaLanguageVersion testCompileVersion,
4547
JavaLanguageVersion testReleaseVersion,
4648
JavaLanguageVersion testLauncherVersion) {
4749
this.explicit = explicit;
4850
this.baseline = baseline;
51+
this.max = max;
4952
this.main = new MainJdks( mainCompileVersion, mainReleaseVersion );
5053
this.test = new TestJdks( testCompileVersion, testReleaseVersion, testLauncherVersion );
5154
}
@@ -58,12 +61,28 @@ public boolean isExplicit() {
5861
return explicit;
5962
}
6063

61-
public JavaLanguageVersion getBaselineVersion() {
64+
public JavaLanguageVersion getBaseline() {
6265
return baseline;
6366
}
6467

65-
public JavaLanguageVersion getBaseline() {
66-
return baseline;
68+
public String getBaselineStr() {
69+
return getBaseline().toString();
70+
}
71+
72+
public JavaLanguageVersion getBaselineVersion() {
73+
return getBaseline();
74+
}
75+
76+
public JavaLanguageVersion getMax() {
77+
return max;
78+
}
79+
80+
public String getMaxStr() {
81+
return getMax().toString();
82+
}
83+
84+
public JavaLanguageVersion getMaxVersion() {
85+
return getMax();
6786
}
6887

6988
public MainJdks getMain() {
@@ -140,6 +159,7 @@ public static JdkVersionConfig createVersionConfig(
140159
return new JdkVersionConfig(
141160
true,
142161
baselineJdkVersion,
162+
maxSupportedJdkVersion,
143163
mainCompileVersion,
144164
mainReleaseVersion,
145165
testCompileVersion,
@@ -165,6 +185,7 @@ public static JdkVersionConfig createVersionConfig(
165185
return new JdkVersionConfig(
166186
false,
167187
baselineJdkVersion,
188+
maxSupportedJdkVersion,
168189
gradleJdkVersion,
169190
baselineJdkVersion,
170191
gradleJdkVersion,
@@ -174,12 +195,6 @@ public static JdkVersionConfig createVersionConfig(
174195
}
175196
}
176197

177-
@NotNull
178-
private static JavaLanguageVersion getJavaLanguageVersion(VersionCatalog jdks, String entryName) {
179-
final VersionConstraint versionConstraint = jdks.findVersion( entryName ).orElseThrow();
180-
return JavaLanguageVersion.of( versionConstraint.getRequiredVersion() );
181-
}
182-
183198
public static JavaLanguageVersion extractVersion(Settings settings, String propertyName) {
184199
final StartParameter startParameters = settings.getGradle().getStartParameter();
185200
final String projectProp = startParameters.getProjectProperties().get( propertyName );

local-build-plugins/src/main/java/org/hibernate/orm/toolchains/JdkVersionSettingsPlugin.java

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
*/
77
package org.hibernate.orm.toolchains;
88

9+
import org.gradle.StartParameter;
910
import org.gradle.api.JavaVersion;
1011
import org.gradle.api.Plugin;
1112
import org.gradle.api.artifacts.VersionCatalog;
13+
import org.gradle.api.artifacts.VersionCatalogsExtension;
1214
import org.gradle.api.artifacts.VersionConstraint;
1315
import org.gradle.api.initialization.Settings;
1416
import org.gradle.api.plugins.ExtraPropertiesExtension;
@@ -31,14 +33,8 @@ public void apply(Settings settings) {
3133
final JavaLanguageVersion explicitTestVersion = extractVersion( settings, TEST_JDK_VERSION );
3234

3335
final JavaLanguageVersion gradleJdkVersion = JavaLanguageVersion.of( JavaVersion.current().getMajorVersion() );
34-
final JavaLanguageVersion baselineJdkVersion;
35-
final JavaLanguageVersion maxSupportedJdkVersion;
36-
// final VersionCatalogsExtension versionCatalogs = settings.getExtensions().getByType( VersionCatalogsExtension.class );
37-
// final VersionCatalog jdkVersions = versionCatalogs.named( "jdks" );
38-
// baselineJdkVersion = getJavaLanguageVersion( jdkVersions, "baseline" );
39-
// maxSupportedJdkVersion = getJavaLanguageVersion( jdkVersions, "maxSupportedBytecode" );
40-
baselineJdkVersion = JavaLanguageVersion.of( "11" );
41-
maxSupportedJdkVersion = JavaLanguageVersion.of( "17" );
36+
final JavaLanguageVersion baselineJdkVersion = getJavaLanguageVersion( settings, "orm.jdk.base" );
37+
final JavaLanguageVersion maxSupportedJdkVersion = getJavaLanguageVersion( settings, "orm.jdk.max" );
4238

4339
final JdkVersionConfig jdkVersionConfig = createVersionConfig(
4440
explicitMainVersion,
@@ -54,8 +50,18 @@ public void apply(Settings settings) {
5450
}
5551

5652
@NotNull
57-
private static JavaLanguageVersion getJavaLanguageVersion(VersionCatalog jdks, String entryName) {
58-
final VersionConstraint versionConstraint = jdks.findVersion( entryName ).orElseThrow();
59-
return JavaLanguageVersion.of( versionConstraint.getRequiredVersion() );
53+
private JavaLanguageVersion getJavaLanguageVersion(Settings settings, String name) {
54+
final StartParameter startParameter = settings.getStartParameter();
55+
final String fromSysProp = startParameter.getSystemPropertiesArgs().get( name );
56+
if ( fromSysProp != null && !fromSysProp.isEmpty() ) {
57+
return JavaLanguageVersion.of( fromSysProp );
58+
}
59+
60+
final String fromProjProp = startParameter.getProjectProperties().get( name );
61+
if ( fromProjProp != null && !fromProjProp.isEmpty() ) {
62+
return JavaLanguageVersion.of( fromProjProp );
63+
}
64+
65+
return JavaLanguageVersion.of( JavaVersion.current().getMajorVersion() );
6066
}
6167
}

settings.gradle

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,17 @@ dependencyResolutionManagement {
5959

6060
versionCatalogs {
6161
jdks {
62-
version "baseline", "17"
62+
// see gradle.properties (or set with -D/-P)
63+
var String baseJdk = jdkVersions.baseline
64+
var String maxJdk = jdkVersions.max
65+
66+
version "baseline", baseJdk
6367
version "compatible", "17 or 21"
6468
version "jdbc", "4.2" // Bundled with JDK 11
6569

6670
// Gradle does bytecode transformation on tests.
6771
// You can't use bytecode higher than what Gradle supports, even with toolchains.
68-
version "maxSupportedBytecode", "22"
72+
version "maxSupportedBytecode", maxJdk
6973
}
7074
libs {
7175
def antlrVersion = version "antlr", "4.13.0"

0 commit comments

Comments
 (0)