From 7613e91a51ebf28392e13d2c7f7805e19b8b269e Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Thu, 17 Oct 2024 14:29:46 +0200 Subject: [PATCH] Remove calls to deprecated Project.getBuildDir() Closes gh-42728 --- .../boot/build/AsciidoctorConventions.java | 9 ++-- .../boot/build/MavenRepositoryPlugin.java | 2 +- .../build/architecture/ArchitectureCheck.java | 3 +- .../AutoConfigurationPlugin.java | 3 +- .../boot/build/bom/BomExtension.java | 20 +++++++-- .../build/mavenplugin/MavenPluginPlugin.java | 42 +++++++++++-------- .../boot/build/starters/StarterPlugin.java | 5 ++- .../architecture/ArchitectureCheckTests.java | 7 +++- 8 files changed, 60 insertions(+), 31 deletions(-) diff --git a/buildSrc/src/main/java/org/springframework/boot/build/AsciidoctorConventions.java b/buildSrc/src/main/java/org/springframework/boot/build/AsciidoctorConventions.java index d5c6014d2d0..17e2226226a 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/AsciidoctorConventions.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/AsciidoctorConventions.java @@ -147,10 +147,14 @@ class AsciidoctorConventions { asciidoctorTask.options(Collections.singletonMap("doctype", "book")); } - private Sync createSyncDocumentationSourceTask(Project project, AbstractAsciidoctorTask asciidoctorTask) { + private void createSyncDocumentationSourceTask(Project project, AbstractAsciidoctorTask asciidoctorTask) { Sync syncDocumentationSource = project.getTasks() .create("syncDocumentationSourceFor" + StringUtils.capitalize(asciidoctorTask.getName()), Sync.class); - File syncedSource = new File(project.getBuildDir(), "docs/src/" + asciidoctorTask.getName()); + File syncedSource = project.getLayout() + .getBuildDirectory() + .dir("docs/src/" + asciidoctorTask.getName()) + .get() + .getAsFile(); syncDocumentationSource.setDestinationDir(syncedSource); syncDocumentationSource.from("src/docs/"); asciidoctorTask.dependsOn(syncDocumentationSource); @@ -159,7 +163,6 @@ class AsciidoctorConventions { .withPathSensitivity(PathSensitivity.RELATIVE) .withPropertyName("synced source"); asciidoctorTask.setSourceDir(project.relativePath(new File(syncedSource, "asciidoc/"))); - return syncDocumentationSource; } } 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 e08af1285cf..258a4ef8dd6 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/MavenRepositoryPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/MavenRepositoryPlugin.java @@ -58,7 +58,7 @@ public class MavenRepositoryPlugin implements Plugin { public void apply(Project project) { project.getPlugins().apply(MavenPublishPlugin.class); PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class); - File repositoryLocation = new File(project.getBuildDir(), "maven-repository"); + File repositoryLocation = project.getLayout().getBuildDirectory().dir("maven-repository").get().getAsFile(); publishing.getRepositories().maven((mavenRepository) -> { mavenRepository.setName("project"); mavenRepository.setUrl(repositoryLocation.toURI()); diff --git a/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java b/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java index a3c545cef87..d4d01a7ff3d 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java @@ -82,7 +82,8 @@ public abstract class ArchitectureCheck extends DefaultTask { noClassesShouldCallStepVerifierStepVerifyComplete(), noClassesShouldConfigureDefaultStepVerifierTimeout(), noClassesShouldCallCollectorsToList(), noClassesShouldCallURLEncoderWithStringEncoding(), noClassesShouldCallURLDecoderWithStringEncoding(), - noClassesShouldCallStringToUpperCaseWithoutLocale(), noClassesShouldCallStringToLowerCaseWithoutLocale()); + noClassesShouldCallStringToUpperCaseWithoutLocale(), + noClassesShouldCallStringToLowerCaseWithoutLocale()); getRules().addAll(getProhibitObjectsRequireNonNull() .map((prohibit) -> prohibit ? noClassesShouldCallObjectsRequireNonNull() : Collections.emptyList())); getRuleDescriptions().set(getRules().map((rules) -> rules.stream().map(ArchRule::getDescription).toList())); 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 3bcbd8f8ed2..496115cffda 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 @@ -93,7 +93,8 @@ public class AutoConfigurationPlugin implements Plugin { .getByName(SourceSet.MAIN_SOURCE_SET_NAME); task.setSourceSet(main); task.dependsOn(main.getClassesTaskName()); - task.getOutputFile().set(new File(project.getBuildDir(), "auto-configuration-metadata.properties")); + task.getOutputFile() + .set(project.getLayout().getBuildDirectory().file("auto-configuration-metadata.properties")); project.getArtifacts() .add(AutoConfigurationPlugin.AUTO_CONFIGURATION_METADATA_CONFIGURATION_NAME, task.getOutputFile(), (artifact) -> artifact.builtBy(task)); diff --git a/buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java b/buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java index 9cf76901db7..0d6503f252d 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java @@ -130,7 +130,11 @@ public class BomExtension { .all((task) -> { Sync syncBom = this.project.getTasks().create("syncBom", Sync.class); syncBom.dependsOn(task); - File generatedBomDir = new File(this.project.getBuildDir(), "generated/bom"); + File generatedBomDir = this.project.getLayout() + .getBuildDirectory() + .dir("generated/bom") + .get() + .getAsFile(); syncBom.setDestinationDir(generatedBomDir); syncBom.from(((GenerateMavenPom) task).getDestination(), (pom) -> pom.rename((name) -> "pom.xml")); try { @@ -139,7 +143,12 @@ public class BomExtension { getClass().getClassLoader().getResourceAsStream("effective-bom-settings.xml"), StandardCharsets.UTF_8)) .replace("localRepositoryPath", - new File(this.project.getBuildDir(), "local-m2-repository").getAbsolutePath()); + this.project.getLayout() + .getBuildDirectory() + .dir("local-m2-repository") + .get() + .getAsFile() + .getAbsolutePath()); syncBom.from(this.project.getResources().getText().fromString(settingsXmlContent), (settingsXml) -> settingsXml.rename((name) -> "settings.xml")); } @@ -149,8 +158,11 @@ public class BomExtension { MavenExec generateEffectiveBom = this.project.getTasks() .create("generateEffectiveBom", MavenExec.class); generateEffectiveBom.getProjectDir().set(generatedBomDir); - File effectiveBom = new File(this.project.getBuildDir(), - "generated/effective-bom/" + this.project.getName() + "-effective-bom.xml"); + File effectiveBom = this.project.getLayout() + .getBuildDirectory() + .file("generated/effective-bom/" + this.project.getName() + "-effective-bom.xml") + .get() + .getAsFile(); generateEffectiveBom.args("--settings", "settings.xml", "help:effective-pom", "-Doutput=" + effectiveBom); generateEffectiveBom.dependsOn(syncBom); 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 733f4600426..485f731cc4a 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 @@ -58,6 +58,7 @@ import org.gradle.api.component.AdhocComponentWithVariants; import org.gradle.api.component.ConfigurationVariantDetails; import org.gradle.api.component.SoftwareComponent; import org.gradle.api.file.CopySpec; +import org.gradle.api.file.Directory; import org.gradle.api.file.DirectoryProperty; import org.gradle.api.file.FileCollection; import org.gradle.api.file.RegularFileProperty; @@ -65,6 +66,7 @@ import org.gradle.api.model.ObjectFactory; import org.gradle.api.plugins.JavaLibraryPlugin; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.JavaPluginExtension; +import org.gradle.api.provider.Provider; import org.gradle.api.publish.PublishingExtension; import org.gradle.api.publish.maven.MavenPublication; import org.gradle.api.publish.maven.plugins.MavenPublishPlugin; @@ -170,11 +172,11 @@ public class MavenPluginPlugin implements Plugin { RuntimeClasspathMavenRepository runtimeClasspathMavenRepository = project.getTasks() .create("runtimeClasspathMavenRepository", RuntimeClasspathMavenRepository.class); runtimeClasspathMavenRepository.getOutputDir() - .set(new File(project.getBuildDir(), "runtime-classpath-repository")); + .set(project.getLayout().getBuildDirectory().dir("runtime-classpath-repository")); project.getDependencies() .components((components) -> components.all(MavenRepositoryComponentMetadataRule.class)); Sync task = project.getTasks().create("populateTestMavenRepository", Sync.class); - task.setDestinationDir(new File(project.getBuildDir(), "test-maven-repository")); + task.setDestinationDir(project.getLayout().getBuildDirectory().dir("test-maven-repository").get().getAsFile()); task.with(copyIntTestMavenRepositoryFiles(project, runtimeClasspathMavenRepository)); task.dependsOn(project.getTasks().getByName(MavenRepositoryPlugin.PUBLISH_TO_PROJECT_REPOSITORY_TASK_NAME)); project.getTasks().getByName(IntegrationTestPlugin.INT_TEST_TASK_NAME).dependsOn(task); @@ -188,7 +190,7 @@ public class MavenPluginPlugin implements Plugin { RuntimeClasspathMavenRepository runtimeClasspathMavenRepository) { CopySpec copySpec = project.copySpec(); copySpec.from(project.getConfigurations().getByName(MavenRepositoryPlugin.MAVEN_REPOSITORY_CONFIGURATION_NAME)); - copySpec.from(new File(project.getBuildDir(), "maven-repository")); + copySpec.from(project.getLayout().getBuildDirectory().dir("maven-repository")); copySpec.from(runtimeClasspathMavenRepository); return copySpec; } @@ -197,29 +199,29 @@ public class MavenPluginPlugin implements Plugin { DocumentPluginGoals task = project.getTasks().create("documentPluginGoals", DocumentPluginGoals.class); File pluginXml = new File(generatePluginDescriptorTask.getOutputs().getFiles().getSingleFile(), "plugin.xml"); task.getPluginXml().set(pluginXml); - task.getOutputDir().set(new File(project.getBuildDir(), "docs/generated/goals/")); + task.getOutputDir().set(project.getLayout().getBuildDirectory().dir("docs/generated/goals/")); task.dependsOn(generatePluginDescriptorTask); } private MavenExec addGenerateHelpMojoTask(Project project, Jar jarTask) { - File helpMojoDir = new File(project.getBuildDir(), "help-mojo"); + Provider helpMojoDir = project.getLayout().getBuildDirectory().dir("help-mojo"); MavenExec task = createGenerateHelpMojoTask(project, helpMojoDir); task.dependsOn(createSyncHelpMojoInputsTask(project, helpMojoDir)); includeHelpMojoInJar(jarTask, task); return task; } - private MavenExec createGenerateHelpMojoTask(Project project, File helpMojoDir) { + private MavenExec createGenerateHelpMojoTask(Project project, Provider helpMojoDir) { MavenExec task = project.getTasks().create("generateHelpMojo", MavenExec.class); task.getProjectDir().set(helpMojoDir); task.args("org.apache.maven.plugins:maven-plugin-plugin:3.6.1:helpmojo"); - task.getOutputs().dir(new File(helpMojoDir, "target/generated-sources/plugin")); + task.getOutputs().dir(helpMojoDir.map((directory) -> directory.dir("target/generated-sources/plugin"))); return task; } - private Sync createSyncHelpMojoInputsTask(Project project, File helpMojoDir) { + private Sync createSyncHelpMojoInputsTask(Project project, Provider helpMojoDir) { Sync task = project.getTasks().create("syncHelpMojoInputs", Sync.class); - task.setDestinationDir(helpMojoDir); + task.setDestinationDir(helpMojoDir.get().getAsFile()); File pomFile = new File(project.getProjectDir(), "src/maven/resources/pom.xml"); task.from(pomFile, (copy) -> replaceVersionPlaceholder(copy, project)); return task; @@ -231,8 +233,10 @@ public class MavenPluginPlugin implements Plugin { } private MavenExec addGeneratePluginDescriptorTask(Project project, Jar jarTask, MavenExec generateHelpMojoTask) { - File pluginDescriptorDir = new File(project.getBuildDir(), "plugin-descriptor"); - File generatedHelpMojoDir = new File(project.getBuildDir(), "generated/sources/helpMojo"); + Provider pluginDescriptorDir = project.getLayout().getBuildDirectory().dir("plugin-descriptor"); + Provider generatedHelpMojoDir = project.getLayout() + .getBuildDirectory() + .dir("generated/sources/helpMojo"); SourceSet mainSourceSet = getMainSourceSet(project); project.getTasks().withType(Javadoc.class, this::setJavadocOptions); FormatHelpMojoSource formattedHelpMojoSource = createFormatHelpMojoSource(project, generateHelpMojoTask, @@ -258,7 +262,7 @@ public class MavenPluginPlugin implements Plugin { } private FormatHelpMojoSource createFormatHelpMojoSource(Project project, MavenExec generateHelpMojoTask, - File generatedHelpMojoDir) { + Provider generatedHelpMojoDir) { FormatHelpMojoSource formatHelpMojoSource = project.getTasks() .create("formatHelpMojoSource", FormatHelpMojoSource.class); formatHelpMojoSource.setGenerator(generateHelpMojoTask); @@ -266,9 +270,10 @@ public class MavenPluginPlugin implements Plugin { return formatHelpMojoSource; } - private Sync createSyncPluginDescriptorInputs(Project project, File destination, SourceSet sourceSet) { + private Sync createSyncPluginDescriptorInputs(Project project, Provider destination, + SourceSet sourceSet) { Sync pluginDescriptorInputs = project.getTasks().create("syncPluginDescriptorInputs", Sync.class); - pluginDescriptorInputs.setDestinationDir(destination); + pluginDescriptorInputs.setDestinationDir(destination.get().getAsFile()); File pomFile = new File(project.getProjectDir(), "src/maven/resources/pom.xml"); pluginDescriptorInputs.from(pomFile, (copy) -> replaceVersionPlaceholder(copy, project)); pluginDescriptorInputs.from(sourceSet.getOutput().getClassesDirs(), (sync) -> sync.into("target/classes")); @@ -277,12 +282,13 @@ public class MavenPluginPlugin implements Plugin { return pluginDescriptorInputs; } - private MavenExec createGeneratePluginDescriptorTask(Project project, File mavenDir) { + private MavenExec createGeneratePluginDescriptorTask(Project project, Provider mavenDir) { MavenExec generatePluginDescriptor = project.getTasks().create("generatePluginDescriptor", MavenExec.class); generatePluginDescriptor.args("org.apache.maven.plugins:maven-plugin-plugin:3.6.1:descriptor"); - generatePluginDescriptor.getOutputs().dir(new File(mavenDir, "target/classes/META-INF/maven")); + generatePluginDescriptor.getOutputs() + .dir(mavenDir.map((directory) -> directory.dir("target/classes/META-INF/maven"))); generatePluginDescriptor.getInputs() - .dir(new File(mavenDir, "target/classes/org")) + .dir(mavenDir.map((directory) -> directory.dir("target/classes/org"))) .withPathSensitivity(PathSensitivity.RELATIVE) .withPropertyName("plugin classes"); generatePluginDescriptor.getProjectDir().set(mavenDir); @@ -298,7 +304,7 @@ public class MavenPluginPlugin implements Plugin { TaskProvider task = project.getTasks() .register("prepareMavenBinaries", PrepareMavenBinaries.class, (prepareMavenBinaries) -> prepareMavenBinaries.getOutputDir() - .set(new File(project.getBuildDir(), "maven-binaries"))); + .set(project.getLayout().getBuildDirectory().dir("maven-binaries"))); project.getTasks() .getByName(IntegrationTestPlugin.INT_TEST_TASK_NAME) .getInputs() 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 84afee6efee..115c7221401 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 @@ -16,7 +16,6 @@ package org.springframework.boot.build.starters; -import java.io.File; import java.util.Map; import java.util.TreeMap; @@ -24,10 +23,12 @@ import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.ConfigurationContainer; +import org.gradle.api.file.RegularFile; import org.gradle.api.plugins.JavaBasePlugin; import org.gradle.api.plugins.JavaLibraryPlugin; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.PluginContainer; +import org.gradle.api.provider.Provider; import org.gradle.api.tasks.bundling.Jar; import org.springframework.boot.build.ConventionsPlugin; @@ -56,7 +57,7 @@ public class StarterPlugin implements Plugin { ConfigurationContainer configurations = project.getConfigurations(); Configuration runtimeClasspath = configurations.getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME); starterMetadata.setDependencies(runtimeClasspath); - File destination = new File(project.getBuildDir(), "starter-metadata.properties"); + Provider destination = project.getLayout().getBuildDirectory().file("starter-metadata.properties"); starterMetadata.getDestination().set(destination); configurations.create("starterMetadata"); project.getArtifacts() diff --git a/buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java b/buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java index fc76dbd488f..2745dc01aa7 100644 --- a/buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java +++ b/buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java @@ -60,7 +60,12 @@ class ArchitectureCheckTests { } File failureReport(ArchitectureCheck architectureCheck) { - return new File(architectureCheck.getProject().getBuildDir(), "checkArchitecture/failure-report.txt"); + return architectureCheck.getProject() + .getLayout() + .getBuildDirectory() + .file("checkArchitecture/failure-report.txt") + .get() + .getAsFile(); } @Test