Skip to content

Commit 976fa1d

Browse files
committed
Merge branch '3.2.x' into 3.3.x
Closes gh-42737
2 parents 8efe6e0 + 7613e91 commit 976fa1d

File tree

8 files changed

+65
-38
lines changed

8 files changed

+65
-38
lines changed

buildSrc/src/main/java/org/springframework/boot/build/AntoraConventions.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.antora.gradle.AntoraTask;
3636
import org.gradle.StartParameter;
3737
import org.gradle.api.Project;
38+
import org.gradle.api.file.Directory;
3839
import org.gradle.api.logging.LogLevel;
3940
import org.gradle.api.plugins.JavaBasePlugin;
4041
import org.gradle.api.provider.Provider;
@@ -86,14 +87,15 @@ private void apply(Project project, AntoraPlugin antoraPlugin) {
8687

8788
private void configureGenerateAntoraPlaybookTask(Project project,
8889
GenerateAntoraPlaybook generateAntoraPlaybookTask) {
89-
File nodeProjectDir = getNodeProjectDir(project.getBuildDir());
90-
generateAntoraPlaybookTask.getOutputFile().set(new File(nodeProjectDir, "antora-playbook.yml"));
90+
Provider<Directory> nodeProjectDir = getNodeProjectDir(project);
91+
generateAntoraPlaybookTask.getOutputFile()
92+
.set(nodeProjectDir.map((directory) -> directory.file("antora-playbook.yml")));
9193
}
9294

9395
private void configureCopyAntoraPackageJsonTask(Project project, Copy copyAntoraPackageJsonTask) {
9496
copyAntoraPackageJsonTask
9597
.from(project.getRootProject().file("antora"), (spec) -> spec.include("package.json", "package-lock.json"))
96-
.into(getNodeProjectDir(project.getBuildDir()));
98+
.into(getNodeProjectDir(project));
9799
}
98100

99101
private void configureNpmInstallTask(Project project, NpmInstallTask npmInstallTask, Copy copyAntoraPackageJson) {
@@ -117,7 +119,7 @@ private void configureGenerateAntoraYmlTask(Project project, GenerateAntoraYmlTa
117119
generateAntoraYmlTask.dependsOn(dependencyVersionsTask);
118120
generateAntoraYmlTask.setProperty("componentName", "boot");
119121
generateAntoraYmlTask.setProperty("outputFile",
120-
new File(project.getBuildDir(), "generated/docs/antora-yml/antora.yml"));
122+
project.getLayout().getBuildDirectory().file("generated/docs/antora-yml/antora.yml"));
121123
generateAntoraYmlTask.setProperty("yml", getDefaultYml(project));
122124
generateAntoraYmlTask.getAsciidocAttributes().putAll(getAsciidocAttributes(project, dependencyVersionsTask));
123125
}
@@ -202,14 +204,13 @@ private String getUiBundleUrl(Project project) {
202204
}
203205

204206
private void configureNodeExtension(Project project, NodeExtension nodeExtension) {
205-
File buildDir = project.getBuildDir();
206-
nodeExtension.getWorkDir().set(buildDir.toPath().resolve(".gradle/nodejs").toFile());
207-
nodeExtension.getNpmWorkDir().set(buildDir.toPath().resolve(".gradle/npm").toFile());
208-
nodeExtension.getNodeProjectDir().set(getNodeProjectDir(buildDir));
207+
nodeExtension.getWorkDir().set(project.getLayout().getBuildDirectory().dir(".gradle/nodejs"));
208+
nodeExtension.getNpmWorkDir().set(project.getLayout().getBuildDirectory().dir(".gradle/npm"));
209+
nodeExtension.getNodeProjectDir().set(getNodeProjectDir(project));
209210
}
210211

211-
private File getNodeProjectDir(File buildDir) {
212-
return buildDir.toPath().resolve(".gradle/nodeproject").toFile();
212+
private Provider<Directory> getNodeProjectDir(Project project) {
213+
return project.getLayout().getBuildDirectory().dir(".gradle/nodeproject");
213214
}
214215

215216
}

buildSrc/src/main/java/org/springframework/boot/build/MavenRepositoryPlugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public class MavenRepositoryPlugin implements Plugin<Project> {
5858
public void apply(Project project) {
5959
project.getPlugins().apply(MavenPublishPlugin.class);
6060
PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class);
61-
File repositoryLocation = new File(project.getBuildDir(), "maven-repository");
61+
File repositoryLocation = project.getLayout().getBuildDirectory().dir("maven-repository").get().getAsFile();
6262
publishing.getRepositories().maven((mavenRepository) -> {
6363
mavenRepository.setName("project");
6464
mavenRepository.setUrl(repositoryLocation.toURI());

buildSrc/src/main/java/org/springframework/boot/build/antora/GenerateAntoraPlaybook.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,8 @@ private void addAntoraContentStartPaths(Set<String> startPaths) {
174174

175175
private void addDir(Map<String, Object> data) {
176176
Path playbookDir = toRealPath(getOutputFile().get().getAsFile().toPath()).getParent();
177-
Path outputDir = toRealPath(getProject().getBuildDir().toPath().resolve("site"));
177+
Path outputDir = toRealPath(
178+
getProject().getLayout().getBuildDirectory().dir("site").get().getAsFile().toPath());
178179
data.put("output", Map.of("dir", "." + File.separator + playbookDir.relativize(outputDir).toString()));
179180
}
180181

buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationPlugin.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,8 @@ public void apply(Project project) {
9393
.getByName(SourceSet.MAIN_SOURCE_SET_NAME);
9494
task.setSourceSet(main);
9595
task.dependsOn(main.getClassesTaskName());
96-
task.getOutputFile().set(new File(project.getBuildDir(), "auto-configuration-metadata.properties"));
96+
task.getOutputFile()
97+
.set(project.getLayout().getBuildDirectory().file("auto-configuration-metadata.properties"));
9798
project.getArtifacts()
9899
.add(AutoConfigurationPlugin.AUTO_CONFIGURATION_METADATA_CONFIGURATION_NAME, task.getOutputFile(),
99100
(artifact) -> artifact.builtBy(task));

buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,11 @@ public void effectiveBomArtifact() {
135135
.all((task) -> {
136136
Sync syncBom = this.project.getTasks().create("syncBom", Sync.class);
137137
syncBom.dependsOn(task);
138-
File generatedBomDir = new File(this.project.getBuildDir(), "generated/bom");
138+
File generatedBomDir = this.project.getLayout()
139+
.getBuildDirectory()
140+
.dir("generated/bom")
141+
.get()
142+
.getAsFile();
139143
syncBom.setDestinationDir(generatedBomDir);
140144
syncBom.from(((GenerateMavenPom) task).getDestination(), (pom) -> pom.rename((name) -> "pom.xml"));
141145
try {
@@ -144,7 +148,12 @@ public void effectiveBomArtifact() {
144148
getClass().getClassLoader().getResourceAsStream("effective-bom-settings.xml"),
145149
StandardCharsets.UTF_8))
146150
.replace("localRepositoryPath",
147-
new File(this.project.getBuildDir(), "local-m2-repository").getAbsolutePath());
151+
this.project.getLayout()
152+
.getBuildDirectory()
153+
.dir("local-m2-repository")
154+
.get()
155+
.getAsFile()
156+
.getAbsolutePath());
148157
syncBom.from(this.project.getResources().getText().fromString(settingsXmlContent),
149158
(settingsXml) -> settingsXml.rename((name) -> "settings.xml"));
150159
}
@@ -154,8 +163,11 @@ public void effectiveBomArtifact() {
154163
MavenExec generateEffectiveBom = this.project.getTasks()
155164
.create("generateEffectiveBom", MavenExec.class);
156165
generateEffectiveBom.getProjectDir().set(generatedBomDir);
157-
File effectiveBom = new File(this.project.getBuildDir(),
158-
"generated/effective-bom/" + this.project.getName() + "-effective-bom.xml");
166+
File effectiveBom = this.project.getLayout()
167+
.getBuildDirectory()
168+
.file("generated/effective-bom/" + this.project.getName() + "-effective-bom.xml")
169+
.get()
170+
.getAsFile();
159171
generateEffectiveBom.args("--settings", "settings.xml", "help:effective-pom",
160172
"-Doutput=" + effectiveBom);
161173
generateEffectiveBom.dependsOn(syncBom);

buildSrc/src/main/java/org/springframework/boot/build/mavenplugin/MavenPluginPlugin.java

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,15 @@
5858
import org.gradle.api.component.ConfigurationVariantDetails;
5959
import org.gradle.api.component.SoftwareComponent;
6060
import org.gradle.api.file.CopySpec;
61+
import org.gradle.api.file.Directory;
6162
import org.gradle.api.file.DirectoryProperty;
6263
import org.gradle.api.file.FileCollection;
6364
import org.gradle.api.file.RegularFileProperty;
6465
import org.gradle.api.model.ObjectFactory;
6566
import org.gradle.api.plugins.JavaLibraryPlugin;
6667
import org.gradle.api.plugins.JavaPlugin;
6768
import org.gradle.api.plugins.JavaPluginExtension;
69+
import org.gradle.api.provider.Provider;
6870
import org.gradle.api.publish.PublishingExtension;
6971
import org.gradle.api.publish.maven.MavenPublication;
7072
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin;
@@ -170,11 +172,11 @@ private void addPopulateIntTestMavenRepositoryTask(Project project) {
170172
RuntimeClasspathMavenRepository runtimeClasspathMavenRepository = project.getTasks()
171173
.create("runtimeClasspathMavenRepository", RuntimeClasspathMavenRepository.class);
172174
runtimeClasspathMavenRepository.getOutputDir()
173-
.set(new File(project.getBuildDir(), "runtime-classpath-repository"));
175+
.set(project.getLayout().getBuildDirectory().dir("runtime-classpath-repository"));
174176
project.getDependencies()
175177
.components((components) -> components.all(MavenRepositoryComponentMetadataRule.class));
176178
Sync task = project.getTasks().create("populateTestMavenRepository", Sync.class);
177-
task.setDestinationDir(new File(project.getBuildDir(), "test-maven-repository"));
179+
task.setDestinationDir(project.getLayout().getBuildDirectory().dir("test-maven-repository").get().getAsFile());
178180
task.with(copyIntTestMavenRepositoryFiles(project, runtimeClasspathMavenRepository));
179181
task.dependsOn(project.getTasks().getByName(MavenRepositoryPlugin.PUBLISH_TO_PROJECT_REPOSITORY_TASK_NAME));
180182
project.getTasks().getByName(IntegrationTestPlugin.INT_TEST_TASK_NAME).dependsOn(task);
@@ -188,7 +190,7 @@ private CopySpec copyIntTestMavenRepositoryFiles(Project project,
188190
RuntimeClasspathMavenRepository runtimeClasspathMavenRepository) {
189191
CopySpec copySpec = project.copySpec();
190192
copySpec.from(project.getConfigurations().getByName(MavenRepositoryPlugin.MAVEN_REPOSITORY_CONFIGURATION_NAME));
191-
copySpec.from(new File(project.getBuildDir(), "maven-repository"));
193+
copySpec.from(project.getLayout().getBuildDirectory().dir("maven-repository"));
192194
copySpec.from(runtimeClasspathMavenRepository);
193195
return copySpec;
194196
}
@@ -197,29 +199,29 @@ private void addDocumentPluginGoalsTask(Project project, MavenExec generatePlugi
197199
DocumentPluginGoals task = project.getTasks().create("documentPluginGoals", DocumentPluginGoals.class);
198200
File pluginXml = new File(generatePluginDescriptorTask.getOutputs().getFiles().getSingleFile(), "plugin.xml");
199201
task.getPluginXml().set(pluginXml);
200-
task.getOutputDir().set(new File(project.getBuildDir(), "generated/docs/maven-plugin-goals/"));
202+
task.getOutputDir().set(project.getLayout().getBuildDirectory().dir("docs/generated/goals/"));
201203
task.dependsOn(generatePluginDescriptorTask);
202204
}
203205

204206
private MavenExec addGenerateHelpMojoTask(Project project, Jar jarTask) {
205-
File helpMojoDir = new File(project.getBuildDir(), "help-mojo");
207+
Provider<Directory> helpMojoDir = project.getLayout().getBuildDirectory().dir("help-mojo");
206208
MavenExec task = createGenerateHelpMojoTask(project, helpMojoDir);
207209
task.dependsOn(createSyncHelpMojoInputsTask(project, helpMojoDir));
208210
includeHelpMojoInJar(jarTask, task);
209211
return task;
210212
}
211213

212-
private MavenExec createGenerateHelpMojoTask(Project project, File helpMojoDir) {
214+
private MavenExec createGenerateHelpMojoTask(Project project, Provider<Directory> helpMojoDir) {
213215
MavenExec task = project.getTasks().create("generateHelpMojo", MavenExec.class);
214216
task.getProjectDir().set(helpMojoDir);
215217
task.args("org.apache.maven.plugins:maven-plugin-plugin:3.6.1:helpmojo");
216-
task.getOutputs().dir(new File(helpMojoDir, "target/generated-sources/plugin"));
218+
task.getOutputs().dir(helpMojoDir.map((directory) -> directory.dir("target/generated-sources/plugin")));
217219
return task;
218220
}
219221

220-
private Sync createSyncHelpMojoInputsTask(Project project, File helpMojoDir) {
222+
private Sync createSyncHelpMojoInputsTask(Project project, Provider<Directory> helpMojoDir) {
221223
Sync task = project.getTasks().create("syncHelpMojoInputs", Sync.class);
222-
task.setDestinationDir(helpMojoDir);
224+
task.setDestinationDir(helpMojoDir.get().getAsFile());
223225
File pomFile = new File(project.getProjectDir(), "src/maven/resources/pom.xml");
224226
task.from(pomFile, (copy) -> replaceVersionPlaceholder(copy, project));
225227
return task;
@@ -231,8 +233,10 @@ private void includeHelpMojoInJar(Jar jarTask, JavaExec generateHelpMojoTask) {
231233
}
232234

233235
private MavenExec addGeneratePluginDescriptorTask(Project project, Jar jarTask, MavenExec generateHelpMojoTask) {
234-
File pluginDescriptorDir = new File(project.getBuildDir(), "plugin-descriptor");
235-
File generatedHelpMojoDir = new File(project.getBuildDir(), "generated/sources/helpMojo");
236+
Provider<Directory> pluginDescriptorDir = project.getLayout().getBuildDirectory().dir("plugin-descriptor");
237+
Provider<Directory> generatedHelpMojoDir = project.getLayout()
238+
.getBuildDirectory()
239+
.dir("generated/sources/helpMojo");
236240
SourceSet mainSourceSet = getMainSourceSet(project);
237241
project.getTasks().withType(Javadoc.class, this::setJavadocOptions);
238242
FormatHelpMojoSource formattedHelpMojoSource = createFormatHelpMojoSource(project, generateHelpMojoTask,
@@ -258,17 +262,18 @@ private void setJavadocOptions(Javadoc javadoc) {
258262
}
259263

260264
private FormatHelpMojoSource createFormatHelpMojoSource(Project project, MavenExec generateHelpMojoTask,
261-
File generatedHelpMojoDir) {
265+
Provider<Directory> generatedHelpMojoDir) {
262266
FormatHelpMojoSource formatHelpMojoSource = project.getTasks()
263267
.create("formatHelpMojoSource", FormatHelpMojoSource.class);
264268
formatHelpMojoSource.setGenerator(generateHelpMojoTask);
265269
formatHelpMojoSource.getOutputDir().set(generatedHelpMojoDir);
266270
return formatHelpMojoSource;
267271
}
268272

269-
private Sync createSyncPluginDescriptorInputs(Project project, File destination, SourceSet sourceSet) {
273+
private Sync createSyncPluginDescriptorInputs(Project project, Provider<Directory> destination,
274+
SourceSet sourceSet) {
270275
Sync pluginDescriptorInputs = project.getTasks().create("syncPluginDescriptorInputs", Sync.class);
271-
pluginDescriptorInputs.setDestinationDir(destination);
276+
pluginDescriptorInputs.setDestinationDir(destination.get().getAsFile());
272277
File pomFile = new File(project.getProjectDir(), "src/maven/resources/pom.xml");
273278
pluginDescriptorInputs.from(pomFile, (copy) -> replaceVersionPlaceholder(copy, project));
274279
pluginDescriptorInputs.from(sourceSet.getOutput().getClassesDirs(), (sync) -> sync.into("target/classes"));
@@ -277,12 +282,13 @@ private Sync createSyncPluginDescriptorInputs(Project project, File destination,
277282
return pluginDescriptorInputs;
278283
}
279284

280-
private MavenExec createGeneratePluginDescriptorTask(Project project, File mavenDir) {
285+
private MavenExec createGeneratePluginDescriptorTask(Project project, Provider<Directory> mavenDir) {
281286
MavenExec generatePluginDescriptor = project.getTasks().create("generatePluginDescriptor", MavenExec.class);
282287
generatePluginDescriptor.args("org.apache.maven.plugins:maven-plugin-plugin:3.6.1:descriptor");
283-
generatePluginDescriptor.getOutputs().dir(new File(mavenDir, "target/classes/META-INF/maven"));
288+
generatePluginDescriptor.getOutputs()
289+
.dir(mavenDir.map((directory) -> directory.dir("target/classes/META-INF/maven")));
284290
generatePluginDescriptor.getInputs()
285-
.dir(new File(mavenDir, "target/classes/org"))
291+
.dir(mavenDir.map((directory) -> directory.dir("target/classes/org")))
286292
.withPathSensitivity(PathSensitivity.RELATIVE)
287293
.withPropertyName("plugin classes");
288294
generatePluginDescriptor.getProjectDir().set(mavenDir);
@@ -298,7 +304,7 @@ private void addPrepareMavenBinariesTask(Project project) {
298304
TaskProvider<PrepareMavenBinaries> task = project.getTasks()
299305
.register("prepareMavenBinaries", PrepareMavenBinaries.class,
300306
(prepareMavenBinaries) -> prepareMavenBinaries.getOutputDir()
301-
.set(new File(project.getBuildDir(), "maven-binaries")));
307+
.set(project.getLayout().getBuildDirectory().dir("maven-binaries")));
302308
project.getTasks()
303309
.getByName(IntegrationTestPlugin.INT_TEST_TASK_NAME)
304310
.getInputs()

buildSrc/src/main/java/org/springframework/boot/build/starters/StarterPlugin.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,19 @@
1616

1717
package org.springframework.boot.build.starters;
1818

19-
import java.io.File;
2019
import java.util.Map;
2120
import java.util.TreeMap;
2221

2322
import org.gradle.api.Plugin;
2423
import org.gradle.api.Project;
2524
import org.gradle.api.artifacts.Configuration;
2625
import org.gradle.api.artifacts.ConfigurationContainer;
26+
import org.gradle.api.file.RegularFile;
2727
import org.gradle.api.plugins.JavaBasePlugin;
2828
import org.gradle.api.plugins.JavaLibraryPlugin;
2929
import org.gradle.api.plugins.JavaPlugin;
3030
import org.gradle.api.plugins.PluginContainer;
31+
import org.gradle.api.provider.Provider;
3132
import org.gradle.api.tasks.bundling.Jar;
3233

3334
import org.springframework.boot.build.ConventionsPlugin;
@@ -56,7 +57,7 @@ public void apply(Project project) {
5657
ConfigurationContainer configurations = project.getConfigurations();
5758
Configuration runtimeClasspath = configurations.getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME);
5859
starterMetadata.setDependencies(runtimeClasspath);
59-
File destination = new File(project.getBuildDir(), "starter-metadata.properties");
60+
Provider<RegularFile> destination = project.getLayout().getBuildDirectory().file("starter-metadata.properties");
6061
starterMetadata.getDestination().set(destination);
6162
configurations.create("starterMetadata");
6263
project.getArtifacts()

buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,12 @@ void whenPackagesAreNotTangledTaskSucceedsAndWritesAnEmptyReport() throws Except
6161
}
6262

6363
File failureReport(ArchitectureCheck architectureCheck) {
64-
return new File(architectureCheck.getProject().getBuildDir(), "checkArchitecture/failure-report.txt");
64+
return architectureCheck.getProject()
65+
.getLayout()
66+
.getBuildDirectory()
67+
.file("checkArchitecture/failure-report.txt")
68+
.get()
69+
.getAsFile();
6570
}
6671

6772
@Test

0 commit comments

Comments
 (0)