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