From 3dc1a88ea6f574152078fecab9530d193b695e2b Mon Sep 17 00:00:00 2001 From: Lars Grefer Date: Wed, 16 Feb 2022 03:12:20 +0100 Subject: [PATCH] Avoid eager task creation inside the spring boot build --- .../boot/build/JavaConventions.java | 77 ++++++++++--------- .../boot/build/KotlinConventions.java | 2 +- .../boot/build/MavenRepositoryPlugin.java | 7 +- .../AutoConfigurationMetadata.java | 2 - .../AutoConfigurationPlugin.java | 24 +++--- .../boot/build/bom/BomPlugin.java | 4 +- .../ConfigurationPropertiesPlugin.java | 24 +++--- .../build/mavenplugin/MavenPluginPlugin.java | 24 +++--- .../processors/AnnotationProcessorPlugin.java | 2 +- .../boot/build/starters/StarterPlugin.java | 21 ++--- .../build/test/IntegrationTestPlugin.java | 2 +- 11 files changed, 105 insertions(+), 84 deletions(-) diff --git a/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java b/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java index 6af96fa9e709..a491cb1f8122 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java @@ -41,6 +41,7 @@ import org.gradle.api.plugins.quality.CheckstylePlugin; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.SourceSetContainer; +import org.gradle.api.tasks.TaskProvider; import org.gradle.api.tasks.bundling.Jar; import org.gradle.api.tasks.compile.JavaCompile; import org.gradle.api.tasks.javadoc.Javadoc; @@ -119,29 +120,32 @@ void apply(Project project) { } private void configureJarManifestConventions(Project project) { - ExtractResources extractLegalResources = project.getTasks().create("extractLegalResources", - ExtractResources.class); - extractLegalResources.getDestinationDirectory().set(project.getLayout().getBuildDirectory().dir("legal")); - extractLegalResources.setResourcesNames(Arrays.asList("LICENSE.txt", "NOTICE.txt")); - extractLegalResources.property("version", project.getVersion().toString()); - SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class); - Set sourceJarTaskNames = sourceSets.stream().map(SourceSet::getSourcesJarTaskName) - .collect(Collectors.toSet()); - Set javadocJarTaskNames = sourceSets.stream().map(SourceSet::getJavadocJarTaskName) - .collect(Collectors.toSet()); - project.getTasks().withType(Jar.class, (jar) -> project.afterEvaluate((evaluated) -> { - jar.metaInf((metaInf) -> metaInf.from(extractLegalResources)); - jar.manifest((manifest) -> { - Map attributes = new TreeMap<>(); - attributes.put("Automatic-Module-Name", project.getName().replace("-", ".")); - attributes.put("Build-Jdk-Spec", SOURCE_AND_TARGET_COMPATIBILITY); - attributes.put("Built-By", "Spring"); - attributes.put("Implementation-Title", - determineImplementationTitle(project, sourceJarTaskNames, javadocJarTaskNames, jar)); - attributes.put("Implementation-Version", project.getVersion()); - manifest.attributes(attributes); + TaskProvider extractLegalResources = project.getTasks().register("extractLegalResources", + ExtractResources.class, (task) -> { + task.getDestinationDirectory().set(project.getLayout().getBuildDirectory().dir("legal")); + task.setResourcesNames(Arrays.asList("LICENSE.txt", "NOTICE.txt")); + task.property("version", project.getVersion().toString()); + }); + project.afterEvaluate((evaluated) -> { + SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class); + Set sourceJarTaskNames = sourceSets.stream().map(SourceSet::getSourcesJarTaskName) + .collect(Collectors.toSet()); + Set javadocJarTaskNames = sourceSets.stream().map(SourceSet::getJavadocJarTaskName) + .collect(Collectors.toSet()); + project.getTasks().withType(Jar.class).configureEach((jar) -> { + jar.metaInf((metaInf) -> metaInf.from(extractLegalResources)); + jar.manifest((manifest) -> { + Map attributes = new TreeMap<>(); + attributes.put("Automatic-Module-Name", project.getName().replace("-", ".")); + attributes.put("Build-Jdk-Spec", SOURCE_AND_TARGET_COMPATIBILITY); + attributes.put("Built-By", "Spring"); + attributes.put("Implementation-Title", + determineImplementationTitle(project, sourceJarTaskNames, javadocJarTaskNames, jar)); + attributes.put("Implementation-Version", project.getVersion()); + manifest.attributes(attributes); + }); }); - })); + }); } private String determineImplementationTitle(Project project, Set sourceJarTaskNames, @@ -156,17 +160,17 @@ private String determineImplementationTitle(Project project, Set sourceJ } private void configureTestConventions(Project project) { - project.getTasks().withType(Test.class, (test) -> { + project.getTasks().withType(Test.class).configureEach((test) -> { test.useJUnitPlatform(); test.setMaxHeapSize("1024M"); - project.getTasks().withType(Checkstyle.class, (checkstyle) -> test.mustRunAfter(checkstyle)); - project.getTasks().withType(CheckFormat.class, (checkFormat) -> test.mustRunAfter(checkFormat)); + test.mustRunAfter(project.getTasks().withType(Checkstyle.class)); + test.mustRunAfter(project.getTasks().withType(CheckFormat.class)); }); project.getPlugins().withType(JavaPlugin.class, (javaPlugin) -> project.getDependencies() .add(JavaPlugin.TEST_RUNTIME_ONLY_CONFIGURATION_NAME, "org.junit.platform:junit-platform-launcher")); project.getPlugins().apply(TestRetryPlugin.class); - project.getTasks().withType(Test.class, - (test) -> project.getPlugins().withType(TestRetryPlugin.class, (testRetryPlugin) -> { + project.getTasks().withType(Test.class) + .configureEach((test) -> project.getPlugins().withType(TestRetryPlugin.class, (testRetryPlugin) -> { TestRetryTaskExtension testRetry = test.getExtensions().getByType(TestRetryTaskExtension.class); testRetry.getFailOnPassedAfterRetry().set(true); testRetry.getMaxRetries().set(isCi() ? 3 : 0); @@ -178,7 +182,8 @@ private boolean isCi() { } private void configureJavadocConventions(Project project) { - project.getTasks().withType(Javadoc.class, (javadoc) -> javadoc.getOptions().source("1.8").encoding("UTF-8")); + project.getTasks().withType(Javadoc.class) + .configureEach((javadoc) -> javadoc.getOptions().source("1.8").encoding("UTF-8")); } private void configureJavaConventions(Project project) { @@ -186,7 +191,7 @@ private void configureJavaConventions(Project project) { JavaPluginExtension javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class); javaPluginExtension.setSourceCompatibility(JavaVersion.toVersion(SOURCE_AND_TARGET_COMPATIBILITY)); } - project.getTasks().withType(JavaCompile.class, (compile) -> { + project.getTasks().withType(JavaCompile.class).configureEach((compile) -> { compile.getOptions().setEncoding("UTF-8"); List args = compile.getOptions().getCompilerArgs(); if (!args.contains("-parameters")) { @@ -209,7 +214,7 @@ private boolean buildingWithJava8(Project project) { private void configureSpringJavaFormat(Project project) { project.getPlugins().apply(SpringJavaFormatPlugin.class); - project.getTasks().withType(Format.class, (Format) -> Format.setEncoding("UTF-8")); + project.getTasks().withType(Format.class).configureEach((Format) -> Format.setEncoding("UTF-8")); project.getPlugins().apply(CheckstylePlugin.class); CheckstyleExtension checkstyle = project.getExtensions().getByType(CheckstyleExtension.class); checkstyle.setToolVersion("8.45.1"); @@ -257,11 +262,13 @@ private void createProhibitedDependenciesChecks(Project project, String... confi } private void createProhibitedDependenciesCheck(Configuration classpath, Project project) { - CheckClasspathForProhibitedDependencies checkClasspathForProhibitedDependencies = project.getTasks().create( - "check" + StringUtils.capitalize(classpath.getName() + "ForProhibitedDependencies"), - CheckClasspathForProhibitedDependencies.class); - checkClasspathForProhibitedDependencies.setClasspath(classpath); - project.getTasks().getByName(JavaBasePlugin.CHECK_TASK_NAME).dependsOn(checkClasspathForProhibitedDependencies); + TaskProvider checkClasspathForProhibitedDependencies = project + .getTasks() + .register("check" + StringUtils.capitalize(classpath.getName() + "ForProhibitedDependencies"), + CheckClasspathForProhibitedDependencies.class); + checkClasspathForProhibitedDependencies.configure((task) -> task.setClasspath(classpath)); + project.getTasks().named(JavaBasePlugin.CHECK_TASK_NAME) + .configure((check) -> check.dependsOn(checkClasspathForProhibitedDependencies)); } } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/KotlinConventions.java b/buildSrc/src/main/java/org/springframework/boot/build/KotlinConventions.java index 7611d71e1aa9..dbe17236b8e2 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/KotlinConventions.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/KotlinConventions.java @@ -44,7 +44,7 @@ class KotlinConventions { void apply(Project project) { project.getPlugins().withId("org.jetbrains.kotlin.jvm", (plugin) -> { - project.getTasks().withType(KotlinCompile.class, (compile) -> { + project.getTasks().withType(KotlinCompile.class).configureEach((compile) -> { KotlinJvmOptions kotlinOptions = compile.getKotlinOptions(); kotlinOptions.setApiVersion("1.3"); kotlinOptions.setLanguageVersion("1.3"); diff --git a/buildSrc/src/main/java/org/springframework/boot/build/MavenRepositoryPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/MavenRepositoryPlugin.java index d7fcbfdcbc20..0697697781ba 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/MavenRepositoryPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/MavenRepositoryPlugin.java @@ -32,6 +32,7 @@ import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.publish.PublishingExtension; import org.gradle.api.publish.maven.plugins.MavenPublishPlugin; +import org.gradle.api.publish.maven.tasks.PublishToMavenRepository; /** * A plugin to make a project's {@code deployment} publication available as a Maven @@ -61,9 +62,11 @@ public void apply(Project project) { mavenRepository.setName("project"); mavenRepository.setUrl(repositoryLocation.toURI()); }); - project.getTasks().matching((task) -> task.getName().equals(PUBLISH_TO_PROJECT_REPOSITORY_TASK_NAME)) + project.getTasks().withType(PublishToMavenRepository.class) + .matching((task) -> task.getName().equals(PUBLISH_TO_PROJECT_REPOSITORY_TASK_NAME)) .all((task) -> setUpProjectRepository(project, task, repositoryLocation)); - project.getTasks().matching((task) -> task.getName().equals("publishPluginMavenPublicationToProjectRepository")) + project.getTasks().withType(PublishToMavenRepository.class) + .matching((task) -> task.getName().equals("publishPluginMavenPublicationToProjectRepository")) .all((task) -> setUpProjectRepository(project, task, repositoryLocation)); } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationMetadata.java b/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationMetadata.java index 636a24396dab..adf35c1be3ba 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationMetadata.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationMetadata.java @@ -58,8 +58,6 @@ public AutoConfigurationMetadata() { "META-INF/spring.factories")) .withPathSensitivity(PathSensitivity.RELATIVE).withPropertyName("spring.factories"); dependsOn((Callable) () -> this.sourceSet.getProcessResourcesTaskName()); - getProject().getConfigurations() - .maybeCreate(AutoConfigurationPlugin.AUTO_CONFIGURATION_METADATA_CONFIGURATION_NAME); } public void setSourceSet(SourceSet sourceSet) { diff --git a/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationPlugin.java index c19f2fcffabf..886b3f1722d0 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationPlugin.java @@ -18,7 +18,6 @@ import java.io.File; import java.util.Collections; -import java.util.concurrent.Callable; import org.gradle.api.Plugin; import org.gradle.api.Project; @@ -26,6 +25,7 @@ import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.JavaPluginConvention; import org.gradle.api.tasks.SourceSet; +import org.gradle.api.tasks.TaskProvider; import org.springframework.boot.build.DeployedPlugin; import org.springframework.boot.build.context.properties.ConfigurationPropertiesPlugin; @@ -65,15 +65,19 @@ public void apply(Project project) { annotationProcessors.getDependencies() .add(project.getDependencies().project(Collections.singletonMap("path", ":spring-boot-project:spring-boot-tools:spring-boot-configuration-processor"))); - project.getTasks().create("autoConfigurationMetadata", AutoConfigurationMetadata.class, (task) -> { - SourceSet main = project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets() - .getByName(SourceSet.MAIN_SOURCE_SET_NAME); - task.setSourceSet(main); - task.dependsOn(main.getClassesTaskName()); - task.setOutputFile(new File(project.getBuildDir(), "auto-configuration-metadata.properties")); - project.getArtifacts().add(AutoConfigurationPlugin.AUTO_CONFIGURATION_METADATA_CONFIGURATION_NAME, - project.provider((Callable) task::getOutputFile), (artifact) -> artifact.builtBy(task)); - }); + project.getConfigurations() + .maybeCreate(AutoConfigurationPlugin.AUTO_CONFIGURATION_METADATA_CONFIGURATION_NAME); + TaskProvider autoConfigurationMetadata = project.getTasks() + .register("autoConfigurationMetadata", AutoConfigurationMetadata.class, (task) -> { + SourceSet main = project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets() + .getByName(SourceSet.MAIN_SOURCE_SET_NAME); + task.setSourceSet(main); + task.dependsOn(main.getClassesTaskName()); + task.setOutputFile(new File(project.getBuildDir(), "auto-configuration-metadata.properties")); + }); + project.getArtifacts().add(AutoConfigurationPlugin.AUTO_CONFIGURATION_METADATA_CONFIGURATION_NAME, + autoConfigurationMetadata.map(AutoConfigurationMetadata::getOutputFile), + (artifact) -> artifact.builtBy(autoConfigurationMetadata)); }); } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/bom/BomPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/bom/BomPlugin.java index d5b1c0206d11..0561f437ee19 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/bom/BomPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/bom/BomPlugin.java @@ -61,8 +61,8 @@ public void apply(Project project) { createApiEnforcedConfiguration(project); BomExtension bom = project.getExtensions().create("bom", BomExtension.class, project.getDependencies(), project); - project.getTasks().create("bomrCheck", CheckBom.class, bom); - project.getTasks().create("bomrUpgrade", UpgradeBom.class, bom); + project.getTasks().register("bomrCheck", CheckBom.class, bom); + project.getTasks().register("bomrUpgrade", UpgradeBom.class, bom); new PublishingCustomizer(project, bom).customize(); } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/context/properties/ConfigurationPropertiesPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/context/properties/ConfigurationPropertiesPlugin.java index 7eefaa20b8df..fd48f655a978 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/context/properties/ConfigurationPropertiesPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/context/properties/ConfigurationPropertiesPlugin.java @@ -81,21 +81,21 @@ private void addMetadataArtifact(Project project) { CONFIGURATION_PROPERTIES_METADATA_CONFIGURATION_NAME, evaluatedProject.provider((Callable) () -> new File(mainSourceSet.getJava().getOutputDir(), "META-INF/spring-configuration-metadata.json")), - (artifact) -> artifact - .builtBy(evaluatedProject.getTasks().getByName(mainSourceSet.getClassesTaskName())))); + (artifact) -> artifact.builtBy(evaluatedProject.getTasks().named(mainSourceSet.getClassesTaskName())))); } private void configureAdditionalMetadataLocationsCompilerArgument(Project project) { - JavaCompile compileJava = project.getTasks().withType(JavaCompile.class) - .getByName(JavaPlugin.COMPILE_JAVA_TASK_NAME); - ((Task) compileJava).getInputs().files(project.getTasks().getByName(JavaPlugin.PROCESS_RESOURCES_TASK_NAME)) - .withPathSensitivity(PathSensitivity.RELATIVE).withPropertyName("processed resources"); - SourceSet mainSourceSet = project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets() - .getByName(SourceSet.MAIN_SOURCE_SET_NAME); - compileJava.getOptions().getCompilerArgs() - .add("-Aorg.springframework.boot.configurationprocessor.additionalMetadataLocations=" + StringUtils - .collectionToCommaDelimitedString(mainSourceSet.getResources().getSourceDirectories().getFiles() - .stream().map(project.getRootProject()::relativePath).collect(Collectors.toSet()))); + project.getTasks().named(JavaPlugin.COMPILE_JAVA_TASK_NAME, JavaCompile.class, (compileJava) -> { + ((Task) compileJava).getInputs().files(project.getTasks().getByName(JavaPlugin.PROCESS_RESOURCES_TASK_NAME)) + .withPathSensitivity(PathSensitivity.RELATIVE).withPropertyName("processed resources"); + SourceSet mainSourceSet = project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets() + .getByName(SourceSet.MAIN_SOURCE_SET_NAME); + compileJava.getOptions().getCompilerArgs() + .add("-Aorg.springframework.boot.configurationprocessor.additionalMetadataLocations=" + + StringUtils.collectionToCommaDelimitedString( + mainSourceSet.getResources().getSourceDirectories().getFiles().stream() + .map(project.getRootProject()::relativePath).collect(Collectors.toSet()))); + }); } } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/mavenplugin/MavenPluginPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/mavenplugin/MavenPluginPlugin.java index d5bf4099b8a0..54da4fe38753 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/mavenplugin/MavenPluginPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/mavenplugin/MavenPluginPlugin.java @@ -80,6 +80,7 @@ import org.gradle.api.tasks.SourceSetContainer; import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.TaskExecutionException; +import org.gradle.api.tasks.TaskProvider; import org.gradle.api.tasks.bundling.Jar; import org.gradle.api.tasks.javadoc.Javadoc; import org.gradle.external.javadoc.StandardJavadocDocletOptions; @@ -122,7 +123,7 @@ public void apply(Project project) { project.getPlugins().apply(DeployedPlugin.class); project.getPlugins().apply(MavenRepositoryPlugin.class); project.getPlugins().apply(IntegrationTestPlugin.class); - Jar jarTask = (Jar) project.getTasks().getByName(JavaPlugin.JAR_TASK_NAME); + TaskProvider jarTask = project.getTasks().named(JavaPlugin.JAR_TASK_NAME, Jar.class); configurePomPackaging(project); addPopulateIntTestMavenRepositoryTask(project); MavenExec generateHelpMojoTask = addGenerateHelpMojoTask(project, jarTask); @@ -178,7 +179,7 @@ private void addDocumentPluginGoalsTask(Project project, MavenExec generatePlugi task.dependsOn(generatePluginDescriptorTask); } - private MavenExec addGenerateHelpMojoTask(Project project, Jar jarTask) { + private MavenExec addGenerateHelpMojoTask(Project project, TaskProvider jarTask) { File helpMojoDir = new File(project.getBuildDir(), "help-mojo"); MavenExec task = createGenerateHelpMojoTask(project, helpMojoDir); task.dependsOn(createCopyHelpMojoInputsTask(project, helpMojoDir)); @@ -202,12 +203,15 @@ private Copy createCopyHelpMojoInputsTask(Project project, File helpMojoDir) { return task; } - private void includeHelpMojoInJar(Jar jarTask, JavaExec generateHelpMojoTask) { - jarTask.from(generateHelpMojoTask).exclude("**/*.java"); - jarTask.dependsOn(generateHelpMojoTask); + private void includeHelpMojoInJar(TaskProvider jarTask, JavaExec generateHelpMojoTask) { + jarTask.configure((jar) -> { + jar.from(generateHelpMojoTask).exclude("**/*.java"); + jar.dependsOn(generateHelpMojoTask); + }); } - private MavenExec addGeneratePluginDescriptorTask(Project project, Jar jarTask, MavenExec generateHelpMojoTask) { + private MavenExec addGeneratePluginDescriptorTask(Project project, TaskProvider jarTask, + MavenExec generateHelpMojoTask) { File pluginDescriptorDir = new File(project.getBuildDir(), "plugin-descriptor"); File generatedHelpMojoDir = new File(project.getBuildDir(), "generated/sources/helpMojo"); SourceSet mainSourceSet = getMainSourceSet(project); @@ -264,9 +268,11 @@ private MavenExec createGeneratePluginDescriptorTask(Project project, File maven return generatePluginDescriptor; } - private void includeDescriptorInJar(Jar jar, JavaExec generatePluginDescriptorTask) { - jar.from(generatePluginDescriptorTask, (copy) -> copy.into("META-INF/maven/")); - jar.dependsOn(generatePluginDescriptorTask); + private void includeDescriptorInJar(TaskProvider jarTask, JavaExec generatePluginDescriptorTask) { + jarTask.configure((jar) -> { + jar.from(generatePluginDescriptorTask, (copy) -> copy.into("META-INF/maven/")); + jar.dependsOn(generatePluginDescriptorTask); + }); } private void addPrepareMavenBinariesTask(Project project) { diff --git a/buildSrc/src/main/java/org/springframework/boot/build/processors/AnnotationProcessorPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/processors/AnnotationProcessorPlugin.java index bb10dc0734ea..f1446bbae524 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/processors/AnnotationProcessorPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/processors/AnnotationProcessorPlugin.java @@ -34,7 +34,7 @@ public class AnnotationProcessorPlugin implements Plugin { @Override public void apply(Project project) { - project.getTasks().withType(Jar.class, (jar) -> project.afterEvaluate((evaluated) -> { + project.afterEvaluate((evaluated) -> project.getTasks().withType(Jar.class).configureEach((jar) -> { jar.manifest((manifest) -> { Map attributes = new TreeMap<>(); attributes.put("Spring-Boot-Jar-Type", JAR_TYPE); diff --git a/buildSrc/src/main/java/org/springframework/boot/build/starters/StarterPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/starters/StarterPlugin.java index ec3984557320..a0d3542aae44 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/starters/StarterPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/starters/StarterPlugin.java @@ -28,6 +28,7 @@ import org.gradle.api.plugins.JavaLibraryPlugin; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.PluginContainer; +import org.gradle.api.tasks.TaskProvider; import org.gradle.api.tasks.bundling.Jar; import org.springframework.boot.build.ConventionsPlugin; @@ -66,23 +67,25 @@ public void apply(Project project) { } private void createClasspathConflictsCheck(Configuration classpath, Project project) { - CheckClasspathForConflicts checkClasspathForConflicts = project.getTasks().create( + TaskProvider checkClasspathForConflicts = project.getTasks().register( "check" + StringUtils.capitalize(classpath.getName() + "ForConflicts"), CheckClasspathForConflicts.class); - checkClasspathForConflicts.setClasspath(classpath); - project.getTasks().getByName(JavaBasePlugin.CHECK_TASK_NAME).dependsOn(checkClasspathForConflicts); + checkClasspathForConflicts.configure((task) -> task.setClasspath(classpath)); + project.getTasks().named(JavaBasePlugin.CHECK_TASK_NAME, + (check) -> check.dependsOn(checkClasspathForConflicts)); } private void createUnnecessaryExclusionsCheck(Configuration classpath, Project project) { - CheckClasspathForUnnecessaryExclusions checkClasspathForUnnecessaryExclusions = project.getTasks().create( - "check" + StringUtils.capitalize(classpath.getName() + "ForUnnecessaryExclusions"), - CheckClasspathForUnnecessaryExclusions.class); - checkClasspathForUnnecessaryExclusions.setClasspath(classpath); - project.getTasks().getByName(JavaBasePlugin.CHECK_TASK_NAME).dependsOn(checkClasspathForUnnecessaryExclusions); + TaskProvider checkClasspathForUnnecessaryExclusions = project.getTasks() + .register("check" + StringUtils.capitalize(classpath.getName() + "ForUnnecessaryExclusions"), + CheckClasspathForUnnecessaryExclusions.class); + checkClasspathForUnnecessaryExclusions.configure((task) -> task.setClasspath(classpath)); + project.getTasks().named(JavaBasePlugin.CHECK_TASK_NAME, + (check) -> check.dependsOn(checkClasspathForUnnecessaryExclusions)); } private void configureJarManifest(Project project) { - project.getTasks().withType(Jar.class, (jar) -> project.afterEvaluate((evaluated) -> { + project.afterEvaluate((evaluated) -> project.getTasks().withType(Jar.class).configureEach((jar) -> { jar.manifest((manifest) -> { Map attributes = new TreeMap<>(); attributes.put("Spring-Boot-Jar-Type", JAR_TYPE); diff --git a/buildSrc/src/main/java/org/springframework/boot/build/test/IntegrationTestPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/test/IntegrationTestPlugin.java index 66c796762959..80a77e21dfe8 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/test/IntegrationTestPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/test/IntegrationTestPlugin.java @@ -52,7 +52,7 @@ public void apply(Project project) { private void configureIntegrationTesting(Project project) { SourceSet intTestSourceSet = createSourceSet(project); Test intTest = createTestTask(project, intTestSourceSet); - project.getTasks().getByName(LifecycleBasePlugin.CHECK_TASK_NAME).dependsOn(intTest); + project.getTasks().named(LifecycleBasePlugin.CHECK_TASK_NAME, (check) -> check.dependsOn(intTest)); project.getPlugins().withType(EclipsePlugin.class, (eclipsePlugin) -> { EclipseModel eclipse = project.getExtensions().getByType(EclipseModel.class); eclipse.classpath((classpath) -> classpath.getPlusConfigurations().add(