Skip to content

Commit c8b0e7f

Browse files
committed
Merge branch '3.2.x' into 3.3.x
Closes gh-42930
2 parents 5d425fe + c340c69 commit c8b0e7f

File tree

11 files changed

+84
-41
lines changed

11 files changed

+84
-41
lines changed

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

+11-5
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import org.apache.maven.artifact.versioning.VersionRange;
3232
import org.gradle.api.DefaultTask;
3333
import org.gradle.api.GradleException;
34+
import org.gradle.api.artifacts.ConfigurationContainer;
35+
import org.gradle.api.artifacts.dsl.DependencyHandler;
3436
import org.gradle.api.tasks.TaskAction;
3537

3638
import org.springframework.boot.build.bom.Library.Group;
@@ -47,11 +49,17 @@
4749
*/
4850
public abstract class CheckBom extends DefaultTask {
4951

52+
private final ConfigurationContainer configurations;
53+
54+
private final DependencyHandler dependencies;
55+
5056
private final BomExtension bom;
5157

5258
@Inject
5359
public CheckBom(BomExtension bom) {
5460
this.bom = bom;
61+
this.configurations = getProject().getConfigurations();
62+
this.dependencies = getProject().getDependencies();
5563
}
5664

5765
@TaskAction
@@ -93,9 +101,8 @@ private void checkExclusions(Library library, List<String> errors) {
93101
}
94102

95103
private void checkExclusions(String groupId, Module module, DependencyVersion version, List<String> errors) {
96-
Set<String> resolved = getProject().getConfigurations()
97-
.detachedConfiguration(
98-
getProject().getDependencies().create(groupId + ":" + module.getName() + ":" + version))
104+
Set<String> resolved = this.configurations
105+
.detachedConfiguration(this.dependencies.create(groupId + ":" + module.getName() + ":" + version))
99106
.getResolvedConfiguration()
100107
.getResolvedArtifacts()
101108
.stream()
@@ -202,8 +209,7 @@ private void checkDependencyManagementAlignment(Library library, List<String> er
202209

203210
private File resolveBom(Library library, String alignsWithBom) {
204211
String coordinates = alignsWithBom + ":" + library.getVersion().getVersion() + "@pom";
205-
Set<File> files = getProject().getConfigurations()
206-
.detachedConfiguration(getProject().getDependencies().create(coordinates))
212+
Set<File> files = this.configurations.detachedConfiguration(this.dependencies.create(coordinates))
207213
.getResolvedConfiguration()
208214
.getFiles();
209215
if (files.size() != 1) {

buildSrc/src/main/java/org/springframework/boot/build/bom/bomr/MoveToSnapshots.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.springframework.boot.build.bom.bomr.github.Milestone;
3636
import org.springframework.boot.build.bom.bomr.version.DependencyVersion;
3737
import org.springframework.boot.build.properties.BuildProperties;
38+
import org.springframework.boot.build.properties.BuildType;
3839

3940
/**
4041
* A {@link Task} to move to snapshot dependencies.
@@ -45,6 +46,8 @@ public abstract class MoveToSnapshots extends UpgradeDependencies {
4546

4647
private static final Logger logger = LoggerFactory.getLogger(MoveToSnapshots.class);
4748

49+
private final BuildType buildType = BuildProperties.get(getProject()).buildType();
50+
4851
@Inject
4952
public MoveToSnapshots(BomExtension bom) {
5053
super(bom, true);
@@ -87,7 +90,7 @@ protected boolean eligible(Library library) {
8790

8891
@Override
8992
protected List<BiPredicate<Library, DependencyVersion>> determineUpdatePredicates(Milestone milestone) {
90-
return switch (BuildProperties.get(getProject()).buildType()) {
93+
return switch (this.buildType) {
9194
case OPEN_SOURCE -> determineOpenSourceUpdatePredicates(milestone);
9295
case COMMERCIAL -> super.determineUpdatePredicates(milestone);
9396
};

buildSrc/src/main/java/org/springframework/boot/build/bom/bomr/UpgradeBom.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import org.gradle.api.Task;
2222
import org.gradle.api.artifacts.ArtifactRepositoryContainer;
23+
import org.gradle.api.artifacts.dsl.RepositoryHandler;
2324
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
2425

2526
import org.springframework.boot.build.bom.BomExtension;
@@ -37,14 +38,14 @@ public abstract class UpgradeBom extends UpgradeDependencies {
3738
public UpgradeBom(BomExtension bom) {
3839
super(bom);
3940
switch (BuildProperties.get(getProject()).buildType()) {
40-
case OPEN_SOURCE -> addOpenSourceRepositories();
41+
case OPEN_SOURCE -> addOpenSourceRepositories(getProject().getRepositories());
4142
case COMMERCIAL -> addCommercialRepositories();
4243
}
4344
}
4445

45-
private void addOpenSourceRepositories() {
46+
private void addOpenSourceRepositories(RepositoryHandler repositories) {
4647
getRepositoryNames().add(ArtifactRepositoryContainer.DEFAULT_MAVEN_CENTRAL_REPO_NAME);
47-
getProject().getRepositories().withType(MavenArtifactRepository.class, (repository) -> {
48+
repositories.withType(MavenArtifactRepository.class, (repository) -> {
4849
String name = repository.getName();
4950
if (name.startsWith("spring-") && !name.endsWith("-snapshot")) {
5051
getRepositoryNames().add(name);

buildSrc/src/main/java/org/springframework/boot/build/bom/bomr/UpgradeDependencies.java

+10-5
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535

3636
import org.gradle.api.DefaultTask;
3737
import org.gradle.api.InvalidUserDataException;
38+
import org.gradle.api.artifacts.dsl.RepositoryHandler;
3839
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
3940
import org.gradle.api.internal.tasks.userinput.UserInputHandler;
4041
import org.gradle.api.provider.ListProperty;
@@ -66,6 +67,10 @@ public abstract class UpgradeDependencies extends DefaultTask {
6667

6768
private final boolean movingToSnapshots;
6869

70+
private final UpgradeApplicator upgradeApplicator;
71+
72+
private final RepositoryHandler repositories;
73+
6974
@Inject
7075
public UpgradeDependencies(BomExtension bom) {
7176
this(bom, false);
@@ -75,6 +80,9 @@ protected UpgradeDependencies(BomExtension bom, boolean movingToSnapshots) {
7580
this.bom = bom;
7681
getThreads().convention(2);
7782
this.movingToSnapshots = movingToSnapshots;
83+
this.upgradeApplicator = new UpgradeApplicator(getProject().getBuildFile().toPath(),
84+
new File(getProject().getRootProject().getProjectDir(), "gradle.properties").toPath());
85+
this.repositories = getProject().getRepositories();
7886
}
7987

8088
@Input
@@ -106,9 +114,6 @@ void upgradeDependencies() {
106114

107115
private void applyUpgrades(GitHubRepository repository, List<String> issueLabels, Milestone milestone,
108116
List<Upgrade> upgrades) {
109-
Path buildFile = getProject().getBuildFile().toPath();
110-
Path gradleProperties = new File(getProject().getRootProject().getProjectDir(), "gradle.properties").toPath();
111-
UpgradeApplicator upgradeApplicator = new UpgradeApplicator(buildFile, gradleProperties);
112117
List<Issue> existingUpgradeIssues = repository.findIssues(issueLabels, milestone);
113118
System.out.println("Applying upgrades...");
114119
System.out.println("");
@@ -117,7 +122,7 @@ private void applyUpgrades(GitHubRepository repository, List<String> issueLabels
117122
String title = issueTitle(upgrade);
118123
Issue existingUpgradeIssue = findExistingUpgradeIssue(existingUpgradeIssues, upgrade);
119124
try {
120-
Path modified = upgradeApplicator.apply(upgrade);
125+
Path modified = this.upgradeApplicator.apply(upgrade);
121126
int issueNumber = getOrOpenUpgradeIssue(repository, issueLabels, milestone, title,
122127
existingUpgradeIssue);
123128
if (existingUpgradeIssue != null && existingUpgradeIssue.getState() == Issue.State.CLOSED) {
@@ -236,7 +241,7 @@ private Collection<MavenArtifactRepository> getRepositories() {
236241

237242
private List<MavenArtifactRepository> asRepositories(List<String> repositoryNames) {
238243
return repositoryNames.stream()
239-
.map(getProject().getRepositories()::getByName)
244+
.map(this.repositories::getByName)
240245
.map(MavenArtifactRepository.class::cast)
241246
.toList();
242247
}

buildSrc/src/main/java/org/springframework/boot/build/classpath/CheckClasspathForUnnecessaryExclusions.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public abstract class CheckClasspathForUnnecessaryExclusions extends DefaultTask
5959

6060
private final Dependency platform;
6161

62-
private final DependencyHandler dependencyHandler;
62+
private final DependencyHandler dependencies;
6363

6464
private final ConfigurationContainer configurations;
6565

@@ -68,10 +68,10 @@ public abstract class CheckClasspathForUnnecessaryExclusions extends DefaultTask
6868
@Inject
6969
public CheckClasspathForUnnecessaryExclusions(DependencyHandler dependencyHandler,
7070
ConfigurationContainer configurations) {
71-
this.dependencyHandler = getProject().getDependencies();
71+
this.dependencies = getProject().getDependencies();
7272
this.configurations = getProject().getConfigurations();
73-
this.platform = this.dependencyHandler
74-
.create(this.dependencyHandler.platform(this.dependencyHandler.project(SPRING_BOOT_DEPENDENCIES_PROJECT)));
73+
this.platform = this.dependencies
74+
.create(this.dependencies.platform(this.dependencies.project(SPRING_BOOT_DEPENDENCIES_PROJECT)));
7575
getOutputs().upToDateWhen((task) -> true);
7676
}
7777

@@ -101,7 +101,7 @@ private void processDependency(ModuleDependency dependency) {
101101
.collect(Collectors.toCollection(TreeSet::new));
102102
this.exclusionsByDependencyId.put(dependencyId, exclusions);
103103
if (!exclusions.isEmpty()) {
104-
this.dependencyById.put(dependencyId, getProject().getDependencies().create(dependencyId));
104+
this.dependencyById.put(dependencyId, this.dependencies.create(dependencyId));
105105
}
106106
}
107107

buildSrc/src/main/java/org/springframework/boot/build/cli/HomebrewFormula.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ public abstract class HomebrewFormula extends DefaultTask {
5454

5555
private final FileSystemOperations fileSystemOperations;
5656

57+
private final BuildType buildType;
58+
5759
@Inject
5860
public HomebrewFormula(FileSystemOperations fileSystemOperations) {
5961
this.fileSystemOperations = fileSystemOperations;
@@ -62,6 +64,7 @@ public HomebrewFormula(FileSystemOperations fileSystemOperations) {
6264
properties.put("hash", getArchive().map((archive) -> sha256(archive.getAsFile())));
6365
getProperties().put("repo", ArtifactRelease.forProject(project).getDownloadRepo());
6466
getProperties().put("version", project.getVersion().toString());
67+
this.buildType = BuildProperties.get(getProject()).buildType();
6568
}
6669

6770
private String sha256(File file) {
@@ -90,8 +93,7 @@ private String sha256(File file) {
9093

9194
@TaskAction
9295
void createFormula() {
93-
BuildType buildType = BuildProperties.get(getProject()).buildType();
94-
if (buildType != BuildType.OPEN_SOURCE) {
96+
if (this.buildType != BuildType.OPEN_SOURCE) {
9597
logger.debug("Skipping Homebrew formula for non open source build type");
9698
return;
9799
}

buildSrc/src/main/java/org/springframework/boot/build/constraints/ExtractVersionConstraints.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -62,17 +62,18 @@ public abstract class ExtractVersionConstraints extends DefaultTask {
6262

6363
private final List<BomExtension> boms = new ArrayList<>();
6464

65+
private final DependencyHandler dependencies;
66+
6567
public ExtractVersionConstraints() {
66-
DependencyHandler dependencies = getProject().getDependencies();
68+
this.dependencies = getProject().getDependencies();
6769
this.configuration = getProject().getConfigurations().create(getName());
68-
dependencies.getComponents().all(this::processMetadataDetails);
70+
this.dependencies.getComponents().all(this::processMetadataDetails);
6971
}
7072

7173
public void enforcedPlatform(String projectPath) {
7274
this.configuration.getDependencies()
73-
.add(getProject().getDependencies()
74-
.enforcedPlatform(
75-
getProject().getDependencies().project(Collections.singletonMap("path", projectPath))));
75+
.add(this.dependencies
76+
.enforcedPlatform(this.dependencies.project(Collections.singletonMap("path", projectPath))));
7677
Project project = getProject().project(projectPath);
7778
project.getPlugins().withType(BomPlugin.class).all((plugin) -> {
7879
this.boms.add(project.getExtensions().getByType(BomExtension.class));

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

+9-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import java.util.Properties;
3131
import java.util.function.BiConsumer;
3232

33+
import javax.inject.Inject;
3334
import javax.xml.parsers.DocumentBuilder;
3435
import javax.xml.parsers.DocumentBuilderFactory;
3536
import javax.xml.parsers.ParserConfigurationException;
@@ -334,6 +335,13 @@ private void addExtractVersionPropertiesTask(Project project) {
334335

335336
public abstract static class FormatHelpMojoSource extends DefaultTask {
336337

338+
private final ObjectFactory objectFactory;
339+
340+
@Inject
341+
public FormatHelpMojoSource(ObjectFactory objectFactory) {
342+
this.objectFactory = objectFactory;
343+
}
344+
337345
private Task generator;
338346

339347
void setGenerator(Task generator) {
@@ -350,7 +358,7 @@ void setGenerator(Task generator) {
350358
void syncAndFormat() {
351359
FileFormatter formatter = new FileFormatter();
352360
for (File output : this.generator.getOutputs().getFiles()) {
353-
formatter.formatFiles(getProject().fileTree(output), StandardCharsets.UTF_8)
361+
formatter.formatFiles(this.objectFactory.fileTree().from(output), StandardCharsets.UTF_8)
354362
.forEach((edit) -> save(output, edit));
355363
}
356364
}

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

+17-9
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,21 @@
1616

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

19+
import java.util.Set;
20+
import java.util.stream.Collectors;
21+
1922
import javax.inject.Inject;
2023

2124
import org.gradle.api.DefaultTask;
2225
import org.gradle.api.Task;
2326
import org.gradle.api.artifacts.Configuration;
27+
import org.gradle.api.artifacts.ConfigurationContainer;
28+
import org.gradle.api.artifacts.dsl.DependencyHandler;
2429
import org.gradle.api.file.ArchiveOperations;
2530
import org.gradle.api.file.DirectoryProperty;
2631
import org.gradle.api.file.FileSystemOperations;
32+
import org.gradle.api.file.FileTree;
33+
import org.gradle.api.provider.Provider;
2734
import org.gradle.api.provider.SetProperty;
2835
import org.gradle.api.tasks.Input;
2936
import org.gradle.api.tasks.OutputDirectory;
@@ -38,12 +45,19 @@ public abstract class PrepareMavenBinaries extends DefaultTask {
3845

3946
private final FileSystemOperations fileSystemOperations;
4047

41-
private final ArchiveOperations archiveOperations;
48+
private final Provider<Set<FileTree>> binaries;
4249

4350
@Inject
4451
public PrepareMavenBinaries(FileSystemOperations fileSystemOperations, ArchiveOperations archiveOperations) {
4552
this.fileSystemOperations = fileSystemOperations;
46-
this.archiveOperations = archiveOperations;
53+
ConfigurationContainer configurations = getProject().getConfigurations();
54+
DependencyHandler dependencies = getProject().getDependencies();
55+
this.binaries = getVersions().map((versions) -> versions.stream()
56+
.map((version) -> configurations
57+
.detachedConfiguration(dependencies.create("org.apache.maven:apache-maven:" + version + ":bin@zip")))
58+
.map(Configuration::getSingleFile)
59+
.map(archiveOperations::zipTree)
60+
.collect(Collectors.toSet()));
4761
}
4862

4963
@OutputDirectory
@@ -56,14 +70,8 @@ public PrepareMavenBinaries(FileSystemOperations fileSystemOperations, ArchiveOp
5670
public void prepareBinaries() {
5771
this.fileSystemOperations.sync((sync) -> {
5872
sync.into(getOutputDir());
59-
for (String version : getVersions().get()) {
60-
Configuration configuration = getProject().getConfigurations()
61-
.detachedConfiguration(getProject().getDependencies()
62-
.create("org.apache.maven:apache-maven:" + version + ":bin@zip"));
63-
sync.from(this.archiveOperations.zipTree(configuration.getSingleFile()));
64-
}
73+
this.binaries.get().forEach(sync::from);
6574
});
66-
6775
}
6876

6977
}

buildSrc/src/main/java/org/springframework/boot/build/test/autoconfigure/TestSliceMetadata.java

+11-3
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,14 @@
3636
import java.util.stream.Stream;
3737
import java.util.stream.StreamSupport;
3838

39+
import javax.inject.Inject;
40+
3941
import org.gradle.api.DefaultTask;
4042
import org.gradle.api.Task;
4143
import org.gradle.api.artifacts.Configuration;
4244
import org.gradle.api.file.FileCollection;
4345
import org.gradle.api.file.RegularFileProperty;
46+
import org.gradle.api.model.ObjectFactory;
4447
import org.gradle.api.tasks.Classpath;
4548
import org.gradle.api.tasks.InputFile;
4649
import org.gradle.api.tasks.InputFiles;
@@ -65,22 +68,27 @@
6568
*/
6669
public abstract class TestSliceMetadata extends DefaultTask {
6770

71+
private final ObjectFactory objectFactory;
72+
6873
private FileCollection classpath;
6974

7075
private FileCollection importsFiles;
7176

7277
private FileCollection classesDirs;
7378

74-
public TestSliceMetadata() {
79+
@Inject
80+
public TestSliceMetadata(ObjectFactory objectFactory) {
81+
this.objectFactory = objectFactory;
7582
Configuration testSliceMetadata = getProject().getConfigurations().maybeCreate("testSliceMetadata");
7683
getProject().afterEvaluate((evaluated) -> evaluated.getArtifacts()
7784
.add(testSliceMetadata.getName(), getOutputFile(), (artifact) -> artifact.builtBy(this)));
7885
}
7986

8087
public void setSourceSet(SourceSet sourceSet) {
8188
this.classpath = sourceSet.getRuntimeClasspath();
82-
this.importsFiles = getProject().fileTree(new File(sourceSet.getOutput().getResourcesDir(), "META-INF/spring"),
83-
(tree) -> tree.filter((file) -> file.getName().endsWith(".imports")));
89+
this.importsFiles = this.objectFactory.fileTree()
90+
.from(new File(sourceSet.getOutput().getResourcesDir(), "META-INF/spring"));
91+
this.importsFiles.filter((file) -> file.getName().endsWith(".imports"));
8492
getSpringFactories().set(new File(sourceSet.getOutput().getResourcesDir(), "META-INF/spring.factories"));
8593
this.classesDirs = sourceSet.getOutput().getClassesDirs();
8694
}

spring-boot-project/spring-boot-tools/spring-boot-antlib/build.gradle

+3-2
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,11 @@ task syncIntegrationTestSources(type: Sync) {
3232
}
3333

3434
processResources {
35+
def version = project.version
3536
eachFile {
36-
filter { it.replace('${spring-boot.version}', project.version) }
37+
filter { it.replace('${spring-boot.version}', version) }
3738
}
38-
inputs.property "version", project.version
39+
inputs.property "version", version
3940
}
4041

4142
task integrationTest {

0 commit comments

Comments
 (0)