Skip to content

Commit 0c7fa8c

Browse files
committed
Clarify toolchain support
1. Document what the main plugins are for. 2. The "compile" version is actually the "compiler" version (the version of the compiler), and shouldn't be mistaken for the "version we compile to". Renaming it.
1 parent da7b935 commit 0c7fa8c

File tree

4 files changed

+59
-46
lines changed

4 files changed

+59
-46
lines changed

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

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,13 @@
2727
import org.gradle.jvm.toolchain.JavaToolchainService;
2828

2929
/**
30+
* Retrieves JDK versions exposed by {@link JdkVersionPlugin}
31+
* and injects them in build tasks.
32+
*
33+
* @see JdkVersionConfig
34+
* @see JdkVersionSettingsPlugin
35+
* @see JdkVersionPlugin
36+
*
3037
* @author Steve Ebersole
3138
*/
3239
public class JavaModulePlugin implements Plugin<Project> {
@@ -57,11 +64,11 @@ public void apply(Project project) {
5764
mainCompileTask.setSourceCompatibility( jdkVersionsConfig.getMainReleaseVersion().toString() );
5865
mainCompileTask.setTargetCompatibility( jdkVersionsConfig.getMainReleaseVersion().toString() );
5966

60-
testCompileTask.setSourceCompatibility( jdkVersionsConfig.getTestCompileVersion().toString() );
61-
testCompileTask.setTargetCompatibility( jdkVersionsConfig.getTestCompileVersion().toString() );
67+
testCompileTask.setSourceCompatibility( jdkVersionsConfig.getTestCompilerVersion().toString() );
68+
testCompileTask.setTargetCompatibility( jdkVersionsConfig.getTestCompilerVersion().toString() );
6269
}
6370
else {
64-
javaPluginExtension.getToolchain().getLanguageVersion().set( jdkVersionsConfig.getMainCompileVersion() );
71+
javaPluginExtension.getToolchain().getLanguageVersion().set( jdkVersionsConfig.getMainCompilerVersion() );
6572

6673
configureCompileTasks( project );
6774
configureTestTasks( project );
@@ -72,7 +79,7 @@ public void apply(Project project) {
7279

7380
testCompileTask.getJavaCompiler().set(
7481
toolchainService.compilerFor( javaToolchainSpec -> {
75-
javaToolchainSpec.getLanguageVersion().set( jdkVersionsConfig.getTestCompileVersion() );
82+
javaToolchainSpec.getLanguageVersion().set( jdkVersionsConfig.getTestCompilerVersion() );
7683
} )
7784
);
7885
if ( testTask != null ) {

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

Lines changed: 34 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@
1919
/**
2020
* Describes the JDK versions of interest to the Hibernate build
2121
*
22+
* @see JdkVersionSettingsPlugin
23+
* @see JdkVersionPlugin
24+
* @see JavaModulePlugin
25+
*
2226
* @author Steve Ebersole
2327
*/
2428
public class JdkVersionConfig {
@@ -36,15 +40,15 @@ public JdkVersionConfig(
3640
boolean explicit,
3741
JavaLanguageVersion baseline,
3842
JavaLanguageVersion max,
39-
JavaLanguageVersion mainCompileVersion,
43+
JavaLanguageVersion mainCompilerVersion,
4044
JavaLanguageVersion mainReleaseVersion,
4145
JavaLanguageVersion testCompileVersion,
4246
JavaLanguageVersion testReleaseVersion,
4347
JavaLanguageVersion testLauncherVersion) {
4448
this.explicit = explicit;
4549
this.baseline = baseline;
4650
this.max = max;
47-
this.main = new MainJdks( mainCompileVersion, mainReleaseVersion );
51+
this.main = new MainJdks( mainCompilerVersion, mainReleaseVersion );
4852
this.test = new TestJdks( testCompileVersion, testReleaseVersion, testLauncherVersion );
4953
}
5054

@@ -88,16 +92,16 @@ public TestJdks getTest() {
8892
return test;
8993
}
9094

91-
public JavaLanguageVersion getMainCompileVersion() {
92-
return main.getCompile();
95+
public JavaLanguageVersion getMainCompilerVersion() {
96+
return main.getCompiler();
9397
}
9498

9599
public JavaLanguageVersion getMainReleaseVersion() {
96100
return main.getRelease();
97101
}
98102

99-
public JavaLanguageVersion getTestCompileVersion() {
100-
return test.getCompile();
103+
public JavaLanguageVersion getTestCompilerVersion() {
104+
return test.getCompiler();
101105
}
102106

103107
public JavaLanguageVersion getTestReleaseVersion() {
@@ -110,9 +114,9 @@ public JavaLanguageVersion getTestLauncherVersion() {
110114

111115
public Set<JavaLanguageVersion> getAllVersions() {
112116
final HashSet<JavaLanguageVersion> versions = new HashSet<>();
113-
versions.add( getMainCompileVersion() );
117+
versions.add( getMainCompilerVersion() );
114118
versions.add( getMainReleaseVersion() );
115-
versions.add( getTestCompileVersion() );
119+
versions.add( getTestCompilerVersion() );
116120
versions.add( getTestReleaseVersion() );
117121
versions.add( getTestLauncherVersion() );
118122
return versions;
@@ -127,37 +131,37 @@ public static JdkVersionConfig createVersionConfig(
127131
JavaLanguageVersion maxSupportedJdkVersion) {
128132
final boolean explicitlyConfigured = explicitMainVersion != null || explicitTestVersion != null;
129133

130-
final JavaLanguageVersion mainCompileVersion;
134+
final JavaLanguageVersion mainCompilerVersion;
131135
final JavaLanguageVersion mainReleaseVersion;
132-
final JavaLanguageVersion testCompileVersion;
136+
final JavaLanguageVersion testCompilerVersion;
133137
final JavaLanguageVersion testReleaseVersion;
134138
final JavaLanguageVersion testLauncherVersion;
135139

136140
if ( explicitlyConfigured ) {
137-
mainCompileVersion = requireNonNullElse( explicitMainVersion, baselineJdkVersion );
138-
testCompileVersion = requireNonNullElse( explicitTestVersion, baselineJdkVersion );
141+
mainCompilerVersion = requireNonNullElse( explicitMainVersion, baselineJdkVersion );
142+
testCompilerVersion = requireNonNullElse( explicitTestVersion, baselineJdkVersion );
139143
mainReleaseVersion = baselineJdkVersion;
140144

141-
if ( testCompileVersion.asInt() > maxSupportedJdkVersion.asInt() ) {
145+
if ( testCompilerVersion.asInt() > maxSupportedJdkVersion.asInt() ) {
142146
System.out.println(
143-
"[WARN] Gradle does not support bytecode version '" + testCompileVersion + "'."
147+
"[WARN] Gradle does not support bytecode version '" + testCompilerVersion + "'."
144148
+ " Forcing test bytecode to version " + maxSupportedJdkVersion + "."
145149
);
146150
testReleaseVersion = maxSupportedJdkVersion;
147151
}
148152
else {
149-
testReleaseVersion = testCompileVersion;
153+
testReleaseVersion = testCompilerVersion;
150154
}
151155

152-
testLauncherVersion = testCompileVersion;
156+
testLauncherVersion = testCompilerVersion;
153157

154158
return new JdkVersionConfig(
155159
true,
156160
baselineJdkVersion,
157161
maxSupportedJdkVersion,
158-
mainCompileVersion,
162+
mainCompilerVersion,
159163
mainReleaseVersion,
160-
testCompileVersion,
164+
testCompilerVersion,
161165
testReleaseVersion,
162166
testLauncherVersion
163167
);
@@ -219,25 +223,17 @@ public static JavaLanguageVersion extractVersion(Project project, String propert
219223
return null;
220224
}
221225

222-
223-
224-
225226
public static class MainJdks implements JdkVersionCombo {
226-
private final JavaLanguageVersion compileVersion;
227+
private final JavaLanguageVersion compilerVersion;
227228
private final JavaLanguageVersion releaseVersion;
228229

229-
public MainJdks(JavaLanguageVersion compileVersion, JavaLanguageVersion releaseVersion) {
230-
this.compileVersion = compileVersion;
230+
public MainJdks(JavaLanguageVersion compilerVersion, JavaLanguageVersion releaseVersion) {
231+
this.compilerVersion = compilerVersion;
231232
this.releaseVersion = releaseVersion;
232233
}
233234

234-
@Override
235-
public JavaLanguageVersion getCompile() {
236-
return compileVersion;
237-
}
238-
239235
public JavaLanguageVersion getCompiler() {
240-
return compileVersion;
236+
return compilerVersion;
241237
}
242238

243239
@Override
@@ -247,31 +243,27 @@ public JavaLanguageVersion getRelease() {
247243

248244
@Override
249245
public String toString() {
250-
return "[compile: " + compileVersion + ", release:" + releaseVersion + "]";
246+
return "[compiler: " + compilerVersion + ", release:" + releaseVersion + "]";
251247
}
252248
}
253249

254250
public static class TestJdks implements JdkVersionCombo {
255-
private final JavaLanguageVersion compileVersion;
251+
private final JavaLanguageVersion compilerVersion;
256252
private final JavaLanguageVersion releaseVersion;
257253
private final JavaLanguageVersion launcherVersion;
258254

259255
public TestJdks(
260-
JavaLanguageVersion compileVersion,
256+
JavaLanguageVersion compilerVersion,
261257
JavaLanguageVersion releaseVersion,
262258
JavaLanguageVersion launcherVersion) {
263-
this.compileVersion = compileVersion;
259+
this.compilerVersion = compilerVersion;
264260
this.releaseVersion = releaseVersion;
265261
this.launcherVersion = launcherVersion;
266262
}
267263

268-
public JavaLanguageVersion getCompiler() {
269-
return compileVersion;
270-
}
271-
272264
@Override
273-
public JavaLanguageVersion getCompile() {
274-
return compileVersion;
265+
public JavaLanguageVersion getCompiler() {
266+
return compilerVersion;
275267
}
276268

277269
@Override
@@ -285,12 +277,12 @@ public JavaLanguageVersion getLauncher() {
285277

286278
@Override
287279
public String toString() {
288-
return "[compile: " + compileVersion + ", release:" + releaseVersion + ", launcher: " + launcherVersion + "]";
280+
return "[compiler: " + compilerVersion + ", release:" + releaseVersion + ", launcher: " + launcherVersion + "]";
289281
}
290282
}
291283

292284
public interface JdkVersionCombo {
293-
JavaLanguageVersion getCompile();
285+
JavaLanguageVersion getCompiler();
294286
JavaLanguageVersion getRelease();
295287
}
296288
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@
2323
import static org.hibernate.orm.toolchains.JdkVersionConfig.extractVersion;
2424

2525
/**
26+
* Gathers JDK versions of interest from settings and exposes them to later phases of the build
27+
* than {@link JdkVersionSettingsPlugin}.
28+
*
29+
* @see JdkVersionConfig
30+
* @see JdkVersionSettingsPlugin
31+
* @see JavaModulePlugin
32+
*
2633
* @author Steve Ebersole
2734
*/
2835
public class JdkVersionPlugin implements Plugin<Project> {

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@
1818
import static org.hibernate.orm.toolchains.JdkVersionConfig.extractVersion;
1919

2020
/**
21+
* Gathers JDK versions of interest from settings and exposes them to earlier phases of the build
22+
* than {@link JdkVersionPlugin}.
23+
*
24+
* @see JdkVersionConfig
25+
* @see JdkVersionPlugin
26+
* @see JavaModulePlugin
27+
*
2128
* @author Steve Ebersole
2229
*/
2330
public class JdkVersionSettingsPlugin implements Plugin<Settings> {

0 commit comments

Comments
 (0)