commit
c8b0e7f66a
|
@ -31,6 +31,8 @@ import org.apache.maven.artifact.versioning.Restriction;
|
|||
import org.apache.maven.artifact.versioning.VersionRange;
|
||||
import org.gradle.api.DefaultTask;
|
||||
import org.gradle.api.GradleException;
|
||||
import org.gradle.api.artifacts.ConfigurationContainer;
|
||||
import org.gradle.api.artifacts.dsl.DependencyHandler;
|
||||
import org.gradle.api.tasks.TaskAction;
|
||||
|
||||
import org.springframework.boot.build.bom.Library.Group;
|
||||
|
@ -47,11 +49,17 @@ import org.springframework.boot.build.bom.bomr.version.DependencyVersion;
|
|||
*/
|
||||
public abstract class CheckBom extends DefaultTask {
|
||||
|
||||
private final ConfigurationContainer configurations;
|
||||
|
||||
private final DependencyHandler dependencies;
|
||||
|
||||
private final BomExtension bom;
|
||||
|
||||
@Inject
|
||||
public CheckBom(BomExtension bom) {
|
||||
this.bom = bom;
|
||||
this.configurations = getProject().getConfigurations();
|
||||
this.dependencies = getProject().getDependencies();
|
||||
}
|
||||
|
||||
@TaskAction
|
||||
|
@ -93,9 +101,8 @@ public abstract class CheckBom extends DefaultTask {
|
|||
}
|
||||
|
||||
private void checkExclusions(String groupId, Module module, DependencyVersion version, List<String> errors) {
|
||||
Set<String> resolved = getProject().getConfigurations()
|
||||
.detachedConfiguration(
|
||||
getProject().getDependencies().create(groupId + ":" + module.getName() + ":" + version))
|
||||
Set<String> resolved = this.configurations
|
||||
.detachedConfiguration(this.dependencies.create(groupId + ":" + module.getName() + ":" + version))
|
||||
.getResolvedConfiguration()
|
||||
.getResolvedArtifacts()
|
||||
.stream()
|
||||
|
@ -202,8 +209,7 @@ public abstract class CheckBom extends DefaultTask {
|
|||
|
||||
private File resolveBom(Library library, String alignsWithBom) {
|
||||
String coordinates = alignsWithBom + ":" + library.getVersion().getVersion() + "@pom";
|
||||
Set<File> files = getProject().getConfigurations()
|
||||
.detachedConfiguration(getProject().getDependencies().create(coordinates))
|
||||
Set<File> files = this.configurations.detachedConfiguration(this.dependencies.create(coordinates))
|
||||
.getResolvedConfiguration()
|
||||
.getFiles();
|
||||
if (files.size() != 1) {
|
||||
|
|
|
@ -35,6 +35,7 @@ import org.springframework.boot.build.bom.bomr.ReleaseSchedule.Release;
|
|||
import org.springframework.boot.build.bom.bomr.github.Milestone;
|
||||
import org.springframework.boot.build.bom.bomr.version.DependencyVersion;
|
||||
import org.springframework.boot.build.properties.BuildProperties;
|
||||
import org.springframework.boot.build.properties.BuildType;
|
||||
|
||||
/**
|
||||
* A {@link Task} to move to snapshot dependencies.
|
||||
|
@ -45,6 +46,8 @@ public abstract class MoveToSnapshots extends UpgradeDependencies {
|
|||
|
||||
private static final Logger logger = LoggerFactory.getLogger(MoveToSnapshots.class);
|
||||
|
||||
private final BuildType buildType = BuildProperties.get(getProject()).buildType();
|
||||
|
||||
@Inject
|
||||
public MoveToSnapshots(BomExtension bom) {
|
||||
super(bom, true);
|
||||
|
@ -87,7 +90,7 @@ public abstract class MoveToSnapshots extends UpgradeDependencies {
|
|||
|
||||
@Override
|
||||
protected List<BiPredicate<Library, DependencyVersion>> determineUpdatePredicates(Milestone milestone) {
|
||||
return switch (BuildProperties.get(getProject()).buildType()) {
|
||||
return switch (this.buildType) {
|
||||
case OPEN_SOURCE -> determineOpenSourceUpdatePredicates(milestone);
|
||||
case COMMERCIAL -> super.determineUpdatePredicates(milestone);
|
||||
};
|
||||
|
|
|
@ -20,6 +20,7 @@ import javax.inject.Inject;
|
|||
|
||||
import org.gradle.api.Task;
|
||||
import org.gradle.api.artifacts.ArtifactRepositoryContainer;
|
||||
import org.gradle.api.artifacts.dsl.RepositoryHandler;
|
||||
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
|
||||
|
||||
import org.springframework.boot.build.bom.BomExtension;
|
||||
|
@ -37,14 +38,14 @@ public abstract class UpgradeBom extends UpgradeDependencies {
|
|||
public UpgradeBom(BomExtension bom) {
|
||||
super(bom);
|
||||
switch (BuildProperties.get(getProject()).buildType()) {
|
||||
case OPEN_SOURCE -> addOpenSourceRepositories();
|
||||
case OPEN_SOURCE -> addOpenSourceRepositories(getProject().getRepositories());
|
||||
case COMMERCIAL -> addCommercialRepositories();
|
||||
}
|
||||
}
|
||||
|
||||
private void addOpenSourceRepositories() {
|
||||
private void addOpenSourceRepositories(RepositoryHandler repositories) {
|
||||
getRepositoryNames().add(ArtifactRepositoryContainer.DEFAULT_MAVEN_CENTRAL_REPO_NAME);
|
||||
getProject().getRepositories().withType(MavenArtifactRepository.class, (repository) -> {
|
||||
repositories.withType(MavenArtifactRepository.class, (repository) -> {
|
||||
String name = repository.getName();
|
||||
if (name.startsWith("spring-") && !name.endsWith("-snapshot")) {
|
||||
getRepositoryNames().add(name);
|
||||
|
|
|
@ -35,6 +35,7 @@ import javax.inject.Inject;
|
|||
|
||||
import org.gradle.api.DefaultTask;
|
||||
import org.gradle.api.InvalidUserDataException;
|
||||
import org.gradle.api.artifacts.dsl.RepositoryHandler;
|
||||
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
|
||||
import org.gradle.api.internal.tasks.userinput.UserInputHandler;
|
||||
import org.gradle.api.provider.ListProperty;
|
||||
|
@ -66,6 +67,10 @@ public abstract class UpgradeDependencies extends DefaultTask {
|
|||
|
||||
private final boolean movingToSnapshots;
|
||||
|
||||
private final UpgradeApplicator upgradeApplicator;
|
||||
|
||||
private final RepositoryHandler repositories;
|
||||
|
||||
@Inject
|
||||
public UpgradeDependencies(BomExtension bom) {
|
||||
this(bom, false);
|
||||
|
@ -75,6 +80,9 @@ public abstract class UpgradeDependencies extends DefaultTask {
|
|||
this.bom = bom;
|
||||
getThreads().convention(2);
|
||||
this.movingToSnapshots = movingToSnapshots;
|
||||
this.upgradeApplicator = new UpgradeApplicator(getProject().getBuildFile().toPath(),
|
||||
new File(getProject().getRootProject().getProjectDir(), "gradle.properties").toPath());
|
||||
this.repositories = getProject().getRepositories();
|
||||
}
|
||||
|
||||
@Input
|
||||
|
@ -106,9 +114,6 @@ public abstract class UpgradeDependencies extends DefaultTask {
|
|||
|
||||
private void applyUpgrades(GitHubRepository repository, List<String> issueLabels, Milestone milestone,
|
||||
List<Upgrade> upgrades) {
|
||||
Path buildFile = getProject().getBuildFile().toPath();
|
||||
Path gradleProperties = new File(getProject().getRootProject().getProjectDir(), "gradle.properties").toPath();
|
||||
UpgradeApplicator upgradeApplicator = new UpgradeApplicator(buildFile, gradleProperties);
|
||||
List<Issue> existingUpgradeIssues = repository.findIssues(issueLabels, milestone);
|
||||
System.out.println("Applying upgrades...");
|
||||
System.out.println("");
|
||||
|
@ -117,7 +122,7 @@ public abstract class UpgradeDependencies extends DefaultTask {
|
|||
String title = issueTitle(upgrade);
|
||||
Issue existingUpgradeIssue = findExistingUpgradeIssue(existingUpgradeIssues, upgrade);
|
||||
try {
|
||||
Path modified = upgradeApplicator.apply(upgrade);
|
||||
Path modified = this.upgradeApplicator.apply(upgrade);
|
||||
int issueNumber = getOrOpenUpgradeIssue(repository, issueLabels, milestone, title,
|
||||
existingUpgradeIssue);
|
||||
if (existingUpgradeIssue != null && existingUpgradeIssue.getState() == Issue.State.CLOSED) {
|
||||
|
@ -236,7 +241,7 @@ public abstract class UpgradeDependencies extends DefaultTask {
|
|||
|
||||
private List<MavenArtifactRepository> asRepositories(List<String> repositoryNames) {
|
||||
return repositoryNames.stream()
|
||||
.map(getProject().getRepositories()::getByName)
|
||||
.map(this.repositories::getByName)
|
||||
.map(MavenArtifactRepository.class::cast)
|
||||
.toList();
|
||||
}
|
||||
|
|
|
@ -59,7 +59,7 @@ public abstract class CheckClasspathForUnnecessaryExclusions extends DefaultTask
|
|||
|
||||
private final Dependency platform;
|
||||
|
||||
private final DependencyHandler dependencyHandler;
|
||||
private final DependencyHandler dependencies;
|
||||
|
||||
private final ConfigurationContainer configurations;
|
||||
|
||||
|
@ -68,10 +68,10 @@ public abstract class CheckClasspathForUnnecessaryExclusions extends DefaultTask
|
|||
@Inject
|
||||
public CheckClasspathForUnnecessaryExclusions(DependencyHandler dependencyHandler,
|
||||
ConfigurationContainer configurations) {
|
||||
this.dependencyHandler = getProject().getDependencies();
|
||||
this.dependencies = getProject().getDependencies();
|
||||
this.configurations = getProject().getConfigurations();
|
||||
this.platform = this.dependencyHandler
|
||||
.create(this.dependencyHandler.platform(this.dependencyHandler.project(SPRING_BOOT_DEPENDENCIES_PROJECT)));
|
||||
this.platform = this.dependencies
|
||||
.create(this.dependencies.platform(this.dependencies.project(SPRING_BOOT_DEPENDENCIES_PROJECT)));
|
||||
getOutputs().upToDateWhen((task) -> true);
|
||||
}
|
||||
|
||||
|
@ -101,7 +101,7 @@ public abstract class CheckClasspathForUnnecessaryExclusions extends DefaultTask
|
|||
.collect(Collectors.toCollection(TreeSet::new));
|
||||
this.exclusionsByDependencyId.put(dependencyId, exclusions);
|
||||
if (!exclusions.isEmpty()) {
|
||||
this.dependencyById.put(dependencyId, getProject().getDependencies().create(dependencyId));
|
||||
this.dependencyById.put(dependencyId, this.dependencies.create(dependencyId));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -54,6 +54,8 @@ public abstract class HomebrewFormula extends DefaultTask {
|
|||
|
||||
private final FileSystemOperations fileSystemOperations;
|
||||
|
||||
private final BuildType buildType;
|
||||
|
||||
@Inject
|
||||
public HomebrewFormula(FileSystemOperations fileSystemOperations) {
|
||||
this.fileSystemOperations = fileSystemOperations;
|
||||
|
@ -62,6 +64,7 @@ public abstract class HomebrewFormula extends DefaultTask {
|
|||
properties.put("hash", getArchive().map((archive) -> sha256(archive.getAsFile())));
|
||||
getProperties().put("repo", ArtifactRelease.forProject(project).getDownloadRepo());
|
||||
getProperties().put("version", project.getVersion().toString());
|
||||
this.buildType = BuildProperties.get(getProject()).buildType();
|
||||
}
|
||||
|
||||
private String sha256(File file) {
|
||||
|
@ -90,8 +93,7 @@ public abstract class HomebrewFormula extends DefaultTask {
|
|||
|
||||
@TaskAction
|
||||
void createFormula() {
|
||||
BuildType buildType = BuildProperties.get(getProject()).buildType();
|
||||
if (buildType != BuildType.OPEN_SOURCE) {
|
||||
if (this.buildType != BuildType.OPEN_SOURCE) {
|
||||
logger.debug("Skipping Homebrew formula for non open source build type");
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -62,17 +62,18 @@ public abstract class ExtractVersionConstraints extends DefaultTask {
|
|||
|
||||
private final List<BomExtension> boms = new ArrayList<>();
|
||||
|
||||
private final DependencyHandler dependencies;
|
||||
|
||||
public ExtractVersionConstraints() {
|
||||
DependencyHandler dependencies = getProject().getDependencies();
|
||||
this.dependencies = getProject().getDependencies();
|
||||
this.configuration = getProject().getConfigurations().create(getName());
|
||||
dependencies.getComponents().all(this::processMetadataDetails);
|
||||
this.dependencies.getComponents().all(this::processMetadataDetails);
|
||||
}
|
||||
|
||||
public void enforcedPlatform(String projectPath) {
|
||||
this.configuration.getDependencies()
|
||||
.add(getProject().getDependencies()
|
||||
.enforcedPlatform(
|
||||
getProject().getDependencies().project(Collections.singletonMap("path", projectPath))));
|
||||
.add(this.dependencies
|
||||
.enforcedPlatform(this.dependencies.project(Collections.singletonMap("path", projectPath))));
|
||||
Project project = getProject().project(projectPath);
|
||||
project.getPlugins().withType(BomPlugin.class).all((plugin) -> {
|
||||
this.boms.add(project.getExtensions().getByType(BomExtension.class));
|
||||
|
|
|
@ -30,6 +30,7 @@ import java.util.Arrays;
|
|||
import java.util.Properties;
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
|
@ -334,6 +335,13 @@ public class MavenPluginPlugin implements Plugin<Project> {
|
|||
|
||||
public abstract static class FormatHelpMojoSource extends DefaultTask {
|
||||
|
||||
private final ObjectFactory objectFactory;
|
||||
|
||||
@Inject
|
||||
public FormatHelpMojoSource(ObjectFactory objectFactory) {
|
||||
this.objectFactory = objectFactory;
|
||||
}
|
||||
|
||||
private Task generator;
|
||||
|
||||
void setGenerator(Task generator) {
|
||||
|
@ -350,7 +358,7 @@ public class MavenPluginPlugin implements Plugin<Project> {
|
|||
void syncAndFormat() {
|
||||
FileFormatter formatter = new FileFormatter();
|
||||
for (File output : this.generator.getOutputs().getFiles()) {
|
||||
formatter.formatFiles(getProject().fileTree(output), StandardCharsets.UTF_8)
|
||||
formatter.formatFiles(this.objectFactory.fileTree().from(output), StandardCharsets.UTF_8)
|
||||
.forEach((edit) -> save(output, edit));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,14 +16,21 @@
|
|||
|
||||
package org.springframework.boot.build.mavenplugin;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.gradle.api.DefaultTask;
|
||||
import org.gradle.api.Task;
|
||||
import org.gradle.api.artifacts.Configuration;
|
||||
import org.gradle.api.artifacts.ConfigurationContainer;
|
||||
import org.gradle.api.artifacts.dsl.DependencyHandler;
|
||||
import org.gradle.api.file.ArchiveOperations;
|
||||
import org.gradle.api.file.DirectoryProperty;
|
||||
import org.gradle.api.file.FileSystemOperations;
|
||||
import org.gradle.api.file.FileTree;
|
||||
import org.gradle.api.provider.Provider;
|
||||
import org.gradle.api.provider.SetProperty;
|
||||
import org.gradle.api.tasks.Input;
|
||||
import org.gradle.api.tasks.OutputDirectory;
|
||||
|
@ -38,12 +45,19 @@ public abstract class PrepareMavenBinaries extends DefaultTask {
|
|||
|
||||
private final FileSystemOperations fileSystemOperations;
|
||||
|
||||
private final ArchiveOperations archiveOperations;
|
||||
private final Provider<Set<FileTree>> binaries;
|
||||
|
||||
@Inject
|
||||
public PrepareMavenBinaries(FileSystemOperations fileSystemOperations, ArchiveOperations archiveOperations) {
|
||||
this.fileSystemOperations = fileSystemOperations;
|
||||
this.archiveOperations = archiveOperations;
|
||||
ConfigurationContainer configurations = getProject().getConfigurations();
|
||||
DependencyHandler dependencies = getProject().getDependencies();
|
||||
this.binaries = getVersions().map((versions) -> versions.stream()
|
||||
.map((version) -> configurations
|
||||
.detachedConfiguration(dependencies.create("org.apache.maven:apache-maven:" + version + ":bin@zip")))
|
||||
.map(Configuration::getSingleFile)
|
||||
.map(archiveOperations::zipTree)
|
||||
.collect(Collectors.toSet()));
|
||||
}
|
||||
|
||||
@OutputDirectory
|
||||
|
@ -56,14 +70,8 @@ public abstract class PrepareMavenBinaries extends DefaultTask {
|
|||
public void prepareBinaries() {
|
||||
this.fileSystemOperations.sync((sync) -> {
|
||||
sync.into(getOutputDir());
|
||||
for (String version : getVersions().get()) {
|
||||
Configuration configuration = getProject().getConfigurations()
|
||||
.detachedConfiguration(getProject().getDependencies()
|
||||
.create("org.apache.maven:apache-maven:" + version + ":bin@zip"));
|
||||
sync.from(this.archiveOperations.zipTree(configuration.getSingleFile()));
|
||||
}
|
||||
this.binaries.get().forEach(sync::from);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -36,11 +36,14 @@ import java.util.stream.Collectors;
|
|||
import java.util.stream.Stream;
|
||||
import java.util.stream.StreamSupport;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.gradle.api.DefaultTask;
|
||||
import org.gradle.api.Task;
|
||||
import org.gradle.api.artifacts.Configuration;
|
||||
import org.gradle.api.file.FileCollection;
|
||||
import org.gradle.api.file.RegularFileProperty;
|
||||
import org.gradle.api.model.ObjectFactory;
|
||||
import org.gradle.api.tasks.Classpath;
|
||||
import org.gradle.api.tasks.InputFile;
|
||||
import org.gradle.api.tasks.InputFiles;
|
||||
|
@ -65,13 +68,17 @@ import org.springframework.util.StringUtils;
|
|||
*/
|
||||
public abstract class TestSliceMetadata extends DefaultTask {
|
||||
|
||||
private final ObjectFactory objectFactory;
|
||||
|
||||
private FileCollection classpath;
|
||||
|
||||
private FileCollection importsFiles;
|
||||
|
||||
private FileCollection classesDirs;
|
||||
|
||||
public TestSliceMetadata() {
|
||||
@Inject
|
||||
public TestSliceMetadata(ObjectFactory objectFactory) {
|
||||
this.objectFactory = objectFactory;
|
||||
Configuration testSliceMetadata = getProject().getConfigurations().maybeCreate("testSliceMetadata");
|
||||
getProject().afterEvaluate((evaluated) -> evaluated.getArtifacts()
|
||||
.add(testSliceMetadata.getName(), getOutputFile(), (artifact) -> artifact.builtBy(this)));
|
||||
|
@ -79,8 +86,9 @@ public abstract class TestSliceMetadata extends DefaultTask {
|
|||
|
||||
public void setSourceSet(SourceSet sourceSet) {
|
||||
this.classpath = sourceSet.getRuntimeClasspath();
|
||||
this.importsFiles = getProject().fileTree(new File(sourceSet.getOutput().getResourcesDir(), "META-INF/spring"),
|
||||
(tree) -> tree.filter((file) -> file.getName().endsWith(".imports")));
|
||||
this.importsFiles = this.objectFactory.fileTree()
|
||||
.from(new File(sourceSet.getOutput().getResourcesDir(), "META-INF/spring"));
|
||||
this.importsFiles.filter((file) -> file.getName().endsWith(".imports"));
|
||||
getSpringFactories().set(new File(sourceSet.getOutput().getResourcesDir(), "META-INF/spring.factories"));
|
||||
this.classesDirs = sourceSet.getOutput().getClassesDirs();
|
||||
}
|
||||
|
|
|
@ -32,10 +32,11 @@ task syncIntegrationTestSources(type: Sync) {
|
|||
}
|
||||
|
||||
processResources {
|
||||
def version = project.version
|
||||
eachFile {
|
||||
filter { it.replace('${spring-boot.version}', project.version) }
|
||||
filter { it.replace('${spring-boot.version}', version) }
|
||||
}
|
||||
inputs.property "version", project.version
|
||||
inputs.property "version", version
|
||||
}
|
||||
|
||||
task integrationTest {
|
||||
|
|
Loading…
Reference in New Issue