Commit 386d678d authored by Andy Wilkinson's avatar Andy Wilkinson

Use Gradle's CreateStartScripts task with 6.4 and later

Fixes gh-20759
parent addaf5ff
...@@ -36,6 +36,8 @@ import org.gradle.api.plugins.ApplicationPluginConvention; ...@@ -36,6 +36,8 @@ import org.gradle.api.plugins.ApplicationPluginConvention;
import org.gradle.api.provider.Property; import org.gradle.api.provider.Property;
import org.gradle.api.provider.Provider; import org.gradle.api.provider.Provider;
import org.gradle.jvm.application.scripts.TemplateBasedScriptGenerator; import org.gradle.jvm.application.scripts.TemplateBasedScriptGenerator;
import org.gradle.jvm.application.tasks.CreateStartScripts;
import org.gradle.util.GradleVersion;
import org.springframework.boot.gradle.tasks.application.CreateBootStartScripts; import org.springframework.boot.gradle.tasks.application.CreateBootStartScripts;
...@@ -53,8 +55,8 @@ final class ApplicationPluginAction implements PluginApplicationAction { ...@@ -53,8 +55,8 @@ final class ApplicationPluginAction implements PluginApplicationAction {
DistributionContainer distributions = project.getExtensions().getByType(DistributionContainer.class); DistributionContainer distributions = project.getExtensions().getByType(DistributionContainer.class);
Distribution distribution = distributions.create("boot"); Distribution distribution = distributions.create("boot");
configureBaseNameConvention(project, applicationConvention, distribution); configureBaseNameConvention(project, applicationConvention, distribution);
CreateBootStartScripts bootStartScripts = project.getTasks().create("bootStartScripts", CreateStartScripts bootStartScripts = project.getTasks().create("bootStartScripts",
CreateBootStartScripts.class); determineCreateStartScriptsClass());
bootStartScripts bootStartScripts
.setDescription("Generates OS-specific start scripts to run the project as a Spring Boot application."); .setDescription("Generates OS-specific start scripts to run the project as a Spring Boot application.");
((TemplateBasedScriptGenerator) bootStartScripts.getUnixStartScriptGenerator()) ((TemplateBasedScriptGenerator) bootStartScripts.getUnixStartScriptGenerator())
...@@ -79,6 +81,14 @@ final class ApplicationPluginAction implements PluginApplicationAction { ...@@ -79,6 +81,14 @@ final class ApplicationPluginAction implements PluginApplicationAction {
distribution.getContents().with(binCopySpec); distribution.getContents().with(binCopySpec);
} }
private Class<? extends CreateStartScripts> determineCreateStartScriptsClass() {
return isGradle64OrLater() ? CreateStartScripts.class : CreateBootStartScripts.class;
}
private boolean isGradle64OrLater() {
return GradleVersion.current().getBaseVersion().compareTo(GradleVersion.version("6.4")) >= 0;
}
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private void configureBaseNameConvention(Project project, ApplicationPluginConvention applicationConvention, private void configureBaseNameConvention(Project project, ApplicationPluginConvention applicationConvention,
Distribution distribution) { Distribution distribution) {
......
...@@ -39,7 +39,7 @@ import org.springframework.boot.gradle.testkit.GradleBuildExtension; ...@@ -39,7 +39,7 @@ import org.springframework.boot.gradle.testkit.GradleBuildExtension;
public final class GradleCompatibilityExtension implements TestTemplateInvocationContextProvider { public final class GradleCompatibilityExtension implements TestTemplateInvocationContextProvider {
private static final List<String> GRADLE_VERSIONS = Arrays.asList("default", "5.0", "5.1.1", "5.2.1", "5.3.1", private static final List<String> GRADLE_VERSIONS = Arrays.asList("default", "5.0", "5.1.1", "5.2.1", "5.3.1",
"5.4.1", "5.5.1", "5.6.4", "6.0.1", "6.1.1", "6.2.2", "6.3"); "5.4.1", "5.5.1", "5.6.4", "6.0.1", "6.1.1", "6.2.2", "6.3", "6.4");
@Override @Override
public Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContexts(ExtensionContext context) { public Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContexts(ExtensionContext context) {
......
...@@ -31,7 +31,7 @@ task('javaCompileEncoding') { ...@@ -31,7 +31,7 @@ task('javaCompileEncoding') {
task('startScriptsDefaultJvmOpts') { task('startScriptsDefaultJvmOpts') {
doFirst { doFirst {
tasks.withType(org.springframework.boot.gradle.tasks.application.CreateBootStartScripts) { tasks.getByName("bootStartScripts") {
println "$name defaultJvmOpts = $defaultJvmOpts" println "$name defaultJvmOpts = $defaultJvmOpts"
} }
} }
......
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