Skip to content

Commit b8276cb

Browse files
committed
Merge pull request #20179 from dreis2211
* gh-20179: Polish "Allow Gradle tasks to be executed with a custom Java home" Allow Gradle tasks to be executed with a custom Java home Closes gh-20179
2 parents ea66940 + 8f44bd8 commit b8276cb

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

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

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.util.List;
2727
import java.util.Map;
2828
import java.util.TreeMap;
29+
import java.util.function.Consumer;
2930

3031
import io.spring.javaformat.gradle.FormatTask;
3132
import io.spring.javaformat.gradle.SpringJavaFormatPlugin;
@@ -127,14 +128,22 @@ private void applyJavaConventions(Project project) {
127128
project.setProperty("sourceCompatibility", "1.8");
128129
project.getTasks().withType(JavaCompile.class, (compile) -> {
129130
compile.getOptions().setEncoding("UTF-8");
131+
withOptionalBuildJavaHome(project, (javaHome) -> {
132+
compile.getOptions().setFork(true);
133+
compile.getOptions().getForkOptions().setJavaHome(new File(javaHome));
134+
compile.getOptions().getForkOptions().setExecutable(javaHome + "/bin/javac");
135+
});
130136
List<String> args = compile.getOptions().getCompilerArgs();
131137
if (!args.contains("-parameters")) {
132138
args.add("-parameters");
133139
}
134140
});
135-
project.getTasks().withType(Javadoc.class,
136-
(javadoc) -> javadoc.getOptions().source("1.8").encoding("UTF-8"));
141+
project.getTasks().withType(Javadoc.class, (javadoc) -> {
142+
javadoc.getOptions().source("1.8").encoding("UTF-8");
143+
withOptionalBuildJavaHome(project, (javaHome) -> javadoc.setExecutable(javaHome + "/bin/javadoc"));
144+
});
137145
project.getTasks().withType(Test.class, (test) -> {
146+
withOptionalBuildJavaHome(project, (javaHome) -> test.setExecutable(javaHome + "/bin/java"));
138147
test.useJUnitPlatform();
139148
test.setMaxHeapSize("1024M");
140149
});
@@ -192,6 +201,13 @@ private File createLegalFile(File source, String filename) {
192201
return legalFile;
193202
}
194203

204+
private void withOptionalBuildJavaHome(Project project, Consumer<String> consumer) {
205+
String buildJavaHome = (String) project.findProperty("buildJavaHome");
206+
if (buildJavaHome != null && !buildJavaHome.isEmpty()) {
207+
consumer.accept(buildJavaHome);
208+
}
209+
}
210+
195211
private void configureSpringJavaFormat(Project project) {
196212
project.getPlugins().apply(SpringJavaFormatPlugin.class);
197213
project.getTasks().withType(FormatTask.class, (formatTask) -> formatTask.setEncoding("UTF-8"));

settings.gradle

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,16 @@ plugins {
2828

2929
rootProject.name="spring-boot-build"
3030

31+
settings.gradle.projectsLoaded {
32+
gradleEnterprise {
33+
buildScan {
34+
if (settings.gradle.rootProject.hasProperty('buildJavaHome')) {
35+
value('Build Java home', settings.gradle.rootProject.getProperty('buildJavaHome'))
36+
}
37+
}
38+
}
39+
}
40+
3141
include "spring-boot-project:spring-boot-dependencies"
3242
include "spring-boot-project:spring-boot-parent"
3343
include "spring-boot-project:spring-boot-tools:spring-boot-antlib"

0 commit comments

Comments
 (0)