From c84b35c460f100c3f3702b1a59192e4071263a26 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Tue, 15 Feb 2022 08:36:29 +0000 Subject: [PATCH] Polish "Avoid using Gradle APIs that trigger eager task creation" See gh-29762 --- .../plugin/ApplicationPluginAction.java | 48 ++++++++++--------- .../gradle/plugin/KotlinPluginAction.java | 2 +- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/ApplicationPluginAction.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/ApplicationPluginAction.java index ab7fab8c39..0c373d5b57 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/ApplicationPluginAction.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/ApplicationPluginAction.java @@ -51,33 +51,37 @@ final class ApplicationPluginAction implements PluginApplicationAction { distribution.getDistributionBaseName() .convention((project.provider(() -> applicationConvention.getApplicationName() + "-boot"))); TaskProvider bootStartScripts = project.getTasks().register("bootStartScripts", - CreateStartScripts.class, (bss) -> { - bss.setDescription( - "Generates OS-specific start scripts to run the project as a Spring Boot application."); - ((TemplateBasedScriptGenerator) bss.getUnixStartScriptGenerator()).setTemplate( - project.getResources().getText().fromString(loadResource("/unixStartScript.txt"))); - ((TemplateBasedScriptGenerator) bss.getWindowsStartScriptGenerator()).setTemplate( - project.getResources().getText().fromString(loadResource("/windowsStartScript.txt"))); - - project.getConfigurations().all((configuration) -> { - if ("bootArchives".equals(configuration.getName())) { - CopySpec libCopySpec = project.copySpec().into("lib") - .from((Callable) () -> configuration.getArtifacts().getFiles()); - libCopySpec.setFileMode(0644); - distribution.getContents().with(libCopySpec); - bss.setClasspath(configuration.getArtifacts().getFiles()); - } - }); - bss.getConventionMapping().map("outputDir", () -> new File(project.getBuildDir(), "bootScripts")); - bss.getConventionMapping().map("applicationName", applicationConvention::getApplicationName); - bss.getConventionMapping().map("defaultJvmOpts", - applicationConvention::getApplicationDefaultJvmArgs); - }); + CreateStartScripts.class, + (task) -> configureCreateStartScripts(project, applicationConvention, distribution, task)); CopySpec binCopySpec = project.copySpec().into("bin").from(bootStartScripts); binCopySpec.setFileMode(0755); distribution.getContents().with(binCopySpec); } + private void configureCreateStartScripts(Project project, ApplicationPluginConvention applicationConvention, + Distribution distribution, CreateStartScripts createStartScripts) { + createStartScripts + .setDescription("Generates OS-specific start scripts to run the project as a Spring Boot application."); + ((TemplateBasedScriptGenerator) createStartScripts.getUnixStartScriptGenerator()) + .setTemplate(project.getResources().getText().fromString(loadResource("/unixStartScript.txt"))); + ((TemplateBasedScriptGenerator) createStartScripts.getWindowsStartScriptGenerator()) + .setTemplate(project.getResources().getText().fromString(loadResource("/windowsStartScript.txt"))); + project.getConfigurations().all((configuration) -> { + if ("bootArchives".equals(configuration.getName())) { + CopySpec libCopySpec = project.copySpec().into("lib") + .from((Callable) () -> configuration.getArtifacts().getFiles()); + libCopySpec.setFileMode(0644); + distribution.getContents().with(libCopySpec); + createStartScripts.setClasspath(configuration.getArtifacts().getFiles()); + } + }); + createStartScripts.getConventionMapping().map("outputDir", + () -> new File(project.getBuildDir(), "bootScripts")); + createStartScripts.getConventionMapping().map("applicationName", applicationConvention::getApplicationName); + createStartScripts.getConventionMapping().map("defaultJvmOpts", + applicationConvention::getApplicationDefaultJvmArgs); + } + @Override public Class> getPluginClass() { return ApplicationPlugin.class; diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/KotlinPluginAction.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/KotlinPluginAction.java index 60ce2785d2..a4bce532bd 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/KotlinPluginAction.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/KotlinPluginAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2021 the original author or authors. + * Copyright 2012-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.