Commit e599ed01 authored by dreis2211's avatar dreis2211 Committed by Andy Wilkinson

Allow Gradle tasks to be executed with a custom Java home

See gh-20179
parent ea66940b
...@@ -127,14 +127,27 @@ public class ConventionsPlugin implements Plugin<Project> { ...@@ -127,14 +127,27 @@ public class ConventionsPlugin implements Plugin<Project> {
project.setProperty("sourceCompatibility", "1.8"); project.setProperty("sourceCompatibility", "1.8");
project.getTasks().withType(JavaCompile.class, (compile) -> { project.getTasks().withType(JavaCompile.class, (compile) -> {
compile.getOptions().setEncoding("UTF-8"); compile.getOptions().setEncoding("UTF-8");
if (hasCustomBuildJavaHome(project)) {
String javaExecutable = getCustomBuildJavaExecutable(project, "/bin/java");
compile.getOptions().getForkOptions().setJavaHome(new File(javaExecutable));
}
List<String> args = compile.getOptions().getCompilerArgs(); List<String> args = compile.getOptions().getCompilerArgs();
if (!args.contains("-parameters")) { if (!args.contains("-parameters")) {
args.add("-parameters"); args.add("-parameters");
} }
}); });
project.getTasks().withType(Javadoc.class, project.getTasks().withType(Javadoc.class, (javadoc) -> {
(javadoc) -> javadoc.getOptions().source("1.8").encoding("UTF-8")); javadoc.getOptions().source("1.8").encoding("UTF-8");
if (hasCustomBuildJavaHome(project)) {
String javaExecutable = getCustomBuildJavaExecutable(project, "/bin/javadoc");
javadoc.setExecutable(javaExecutable);
}
});
project.getTasks().withType(Test.class, (test) -> { project.getTasks().withType(Test.class, (test) -> {
if (hasCustomBuildJavaHome(project)) {
String javaExecutable = getCustomBuildJavaExecutable(project, "/bin/java");
test.setExecutable(javaExecutable);
}
test.useJUnitPlatform(); test.useJUnitPlatform();
test.setMaxHeapSize("1024M"); test.setMaxHeapSize("1024M");
}); });
...@@ -192,6 +205,14 @@ public class ConventionsPlugin implements Plugin<Project> { ...@@ -192,6 +205,14 @@ public class ConventionsPlugin implements Plugin<Project> {
return legalFile; return legalFile;
} }
private boolean hasCustomBuildJavaHome(Project project) {
return project.hasProperty("buildJavaHome") && !((String) project.property("buildJavaHome")).isEmpty();
}
private String getCustomBuildJavaExecutable(Project project, String executable) {
return project.property("buildJavaHome") + executable;
}
private void configureSpringJavaFormat(Project project) { private void configureSpringJavaFormat(Project project) {
project.getPlugins().apply(SpringJavaFormatPlugin.class); project.getPlugins().apply(SpringJavaFormatPlugin.class);
project.getTasks().withType(FormatTask.class, (formatTask) -> formatTask.setEncoding("UTF-8")); project.getTasks().withType(FormatTask.class, (formatTask) -> formatTask.setEncoding("UTF-8"));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment