Commit 8667e9de authored by Andy Wilkinson's avatar Andy Wilkinson

Merge branch '2.2.x' into 2.3.x

Closes gh-23426
parents d06af28c 581190d7
/* /*
* Copyright 2012-2019 the original author or authors. * Copyright 2012-2020 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -18,6 +18,7 @@ package org.springframework.boot.gradle.plugin; ...@@ -18,6 +18,7 @@ package org.springframework.boot.gradle.plugin;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import java.util.function.Supplier; import java.util.function.Supplier;
...@@ -26,6 +27,7 @@ import org.gradle.api.InvalidUserDataException; ...@@ -26,6 +27,7 @@ import org.gradle.api.InvalidUserDataException;
import org.gradle.api.Project; import org.gradle.api.Project;
import org.gradle.api.file.FileCollection; import org.gradle.api.file.FileCollection;
import org.gradle.api.plugins.JavaApplication; import org.gradle.api.plugins.JavaApplication;
import org.gradle.api.provider.Property;
import org.springframework.boot.gradle.dsl.SpringBootExtension; import org.springframework.boot.gradle.dsl.SpringBootExtension;
import org.springframework.boot.loader.tools.MainClassFinder; import org.springframework.boot.loader.tools.MainClassFinder;
...@@ -54,11 +56,36 @@ final class MainClassConvention implements Callable<Object> { ...@@ -54,11 +56,36 @@ final class MainClassConvention implements Callable<Object> {
if (springBootExtension != null && springBootExtension.getMainClassName() != null) { if (springBootExtension != null && springBootExtension.getMainClassName() != null) {
return springBootExtension.getMainClassName(); return springBootExtension.getMainClassName();
} }
String javaApplicationMainClass = getJavaApplicationMainClass();
return (javaApplicationMainClass != null) ? javaApplicationMainClass : resolveMainClass();
}
@SuppressWarnings("unchecked")
private String getJavaApplicationMainClass() {
JavaApplication javaApplication = this.project.getConvention().findByType(JavaApplication.class); JavaApplication javaApplication = this.project.getConvention().findByType(JavaApplication.class);
if (javaApplication != null && javaApplication.getMainClassName() != null) { if (javaApplication == null) {
return javaApplication.getMainClassName(); return null;
}
Method getMainClass = findMethod(JavaApplication.class, "getMainClass");
if (getMainClass != null) {
try {
Property<String> mainClass = (Property<String>) getMainClass.invoke(javaApplication);
return mainClass.getOrElse(null);
}
catch (Exception ex) {
// Continue
}
}
return javaApplication.getMainClassName();
}
private static Method findMethod(Class<?> type, String name) {
for (Method candidate : type.getMethods()) {
if (candidate.getName().equals(name)) {
return candidate;
}
} }
return resolveMainClass(); return null;
} }
private String resolveMainClass() { private String resolveMainClass() {
......
...@@ -45,10 +45,10 @@ public final class GradleCompatibilityExtension implements TestTemplateInvocatio ...@@ -45,10 +45,10 @@ public final class GradleCompatibilityExtension implements TestTemplateInvocatio
JavaVersion javaVersion = JavaVersion.current(); JavaVersion javaVersion = JavaVersion.current();
if (javaVersion.isCompatibleWith(JavaVersion.VERSION_14) if (javaVersion.isCompatibleWith(JavaVersion.VERSION_14)
|| javaVersion.isCompatibleWith(JavaVersion.VERSION_13)) { || javaVersion.isCompatibleWith(JavaVersion.VERSION_13)) {
GRADLE_VERSIONS = Arrays.asList("6.3", "6.4.1", "6.5.1", "default"); GRADLE_VERSIONS = Arrays.asList("6.3", "6.4.1", "6.5.1", "default", "6.7-rc-1");
} }
else { else {
GRADLE_VERSIONS = Arrays.asList("5.6.4", "6.3", "6.4.1", "6.5.1", "default"); GRADLE_VERSIONS = Arrays.asList("5.6.4", "6.3", "6.4.1", "6.5.1", "default", "6.7-rc-1");
} }
} }
......
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