Skip to content

Commit 96865d3

Browse files
committed
Improve how system requirements config affects Eclipse
See gh-48684
1 parent 28b29fb commit 96865d3

5 files changed

Lines changed: 28 additions & 18 deletions

File tree

buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@
5252
import org.gradle.api.tasks.javadoc.Javadoc;
5353
import org.gradle.api.tasks.testing.Test;
5454
import org.gradle.external.javadoc.CoreJavadocOptions;
55-
import org.gradle.jvm.toolchain.JavaLanguageVersion;
5655

5756
import org.springframework.boot.build.SystemRequirementsExtension.JavaSpec;
5857
import org.springframework.boot.build.architecture.ArchitecturePlugin;
@@ -170,7 +169,7 @@ private void configureJarManifestConventions(Project project) {
170169
jar.manifest((manifest) -> {
171170
Map<String, Object> attributes = new TreeMap<>();
172171
attributes.put("Automatic-Module-Name", project.getName().replace("-", "."));
173-
attributes.put("Build-Jdk-Spec", this.javaSpec.getVersion().get().toString());
172+
attributes.put("Build-Jdk-Spec", this.javaSpec.getVersion());
174173
attributes.put("Built-By", "Spring");
175174
attributes.put("Implementation-Title",
176175
determineImplementationTitle(project, sourceJarTaskNames, javadocJarTaskNames, jar));
@@ -248,15 +247,9 @@ private void addValuelessOption(CoreJavadocOptions options, String option) {
248247
}
249248

250249
private void configureJavaConventions(Project project) {
251-
JavaLanguageVersion javaVersion = this.javaSpec.getVersion().get();
252-
if (!project.hasProperty("toolchainVersion")) {
253-
JavaPluginExtension javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class);
254-
javaPluginExtension.setSourceCompatibility(javaVersion);
255-
javaPluginExtension.setTargetCompatibility(javaVersion);
256-
}
257250
project.getTasks().withType(JavaCompile.class, (compile) -> {
258251
compile.getOptions().setEncoding("UTF-8");
259-
compile.getOptions().getRelease().set(javaVersion.asInt());
252+
compile.getOptions().getRelease().set(this.javaSpec.getVersion());
260253
List<String> args = compile.getOptions().getCompilerArgs();
261254
if (!args.contains("-parameters")) {
262255
args.add("-parameters");

buildSrc/src/main/java/org/springframework/boot/build/SystemRequirementsExtension.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@
1919
import javax.inject.Inject;
2020

2121
import org.gradle.api.Action;
22+
import org.gradle.api.Project;
2223
import org.gradle.api.model.ObjectFactory;
23-
import org.gradle.api.provider.Property;
24+
import org.gradle.api.plugins.JavaPluginExtension;
2425
import org.gradle.jvm.toolchain.JavaLanguageVersion;
2526

2627
/**
@@ -33,8 +34,8 @@ public class SystemRequirementsExtension {
3334
private final JavaSpec javaSpec;
3435

3536
@Inject
36-
public SystemRequirementsExtension(ObjectFactory objects) {
37-
this.javaSpec = objects.newInstance(JavaSpec.class);
37+
public SystemRequirementsExtension(Project project, ObjectFactory objects) {
38+
this.javaSpec = objects.newInstance(JavaSpec.class, project);
3839
}
3940

4041
public void java(Action<JavaSpec> action) {
@@ -47,11 +48,26 @@ public JavaSpec getJava() {
4748

4849
public abstract static class JavaSpec {
4950

50-
public JavaSpec() {
51-
getVersion().convention(JavaLanguageVersion.of(17));
51+
private final Project project;
52+
53+
private int version = 17;
54+
55+
@Inject
56+
public JavaSpec(Project project) {
57+
this.project = project;
5258
}
5359

54-
public abstract Property<JavaLanguageVersion> getVersion();
60+
public int getVersion() {
61+
return this.version;
62+
}
63+
64+
public void setVersion(int version) {
65+
JavaLanguageVersion javaVersion = JavaLanguageVersion.of(version);
66+
JavaPluginExtension javaPluginExtension = this.project.getExtensions().getByType(JavaPluginExtension.class);
67+
javaPluginExtension.setSourceCompatibility(javaVersion);
68+
javaPluginExtension.setTargetCompatibility(javaVersion);
69+
this.version = version;
70+
}
5571

5672
}
5773

buildSrc/src/main/java/org/springframework/boot/build/toolchain/ToolchainExtension.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ public ToolchainExtension(Project project) {
3737
String toolchainVersion = (String) project.findProperty("toolchainVersion");
3838
this.javaVersion = (toolchainVersion != null) ? JavaLanguageVersion.of(toolchainVersion) : null;
3939
JavaSpec javaSpec = project.getExtensions().getByType(SystemRequirementsExtension.class).getJava();
40-
getMinimumCompatibleJavaVersion().convention(javaSpec.getVersion());
40+
getMinimumCompatibleJavaVersion()
41+
.convention(project.provider(() -> JavaLanguageVersion.of(javaSpec.getVersion())));
4142
}
4243

4344
public abstract Property<JavaLanguageVersion> getMinimumCompatibleJavaVersion();

module/spring-boot-jooq-test/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ description = "Spring Boot jOOQ Test"
2525

2626
systemRequirements {
2727
java {
28-
version = JavaLanguageVersion.of(21)
28+
version = 21
2929
}
3030
}
3131

module/spring-boot-jooq/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ description = "Spring Boot jOOQ"
2626

2727
systemRequirements {
2828
java {
29-
version = JavaLanguageVersion.of(21)
29+
version = 21
3030
}
3131
}
3232

0 commit comments

Comments
 (0)