diff --git a/buildSrc/SpringRepositorySupport.groovy b/buildSrc/SpringRepositorySupport.groovy index 778f173ca37..2cdd5292811 100644 --- a/buildSrc/SpringRepositorySupport.groovy +++ b/buildSrc/SpringRepositorySupport.groovy @@ -100,29 +100,29 @@ class SpringRepositoriesExtension { } private void addRepositories(action) { - addCommercialRepository("release", "/spring-enterprise-maven-prod-local", action) + addCommercialRepository("release", false, "/spring-enterprise-maven-prod-local", action) if (this.version.contains("-")) { - addOssRepository("milestone", "/milestone", action) + addOssRepository("milestone", false, "/milestone", action) } if (this.version.endsWith("-SNAPSHOT")) { - addCommercialRepository("snapshot", "/spring-enterprise-maven-dev-local", action) - addOssRepository("snapshot", "/snapshot", action) + addCommercialRepository("snapshot", true, "/spring-enterprise-maven-dev-local", action) + addOssRepository("snapshot", true, "/snapshot", action) } } - private void addOssRepository(id, path, action) { + private void addOssRepository(id, snapshot, path, action) { def name = "spring-oss-" + id def url = "https://repo.spring.io" + path - addRepository(name, url, action) + addRepository(name, snapshot, url, action) } - private void addCommercialRepository(id, path, action) { + private void addCommercialRepository(id, snapshot, path, action) { if (!"commercial".equalsIgnoreCase(this.buildType)) return def name = "spring-commercial-" + id def url = fromEnv("COMMERCIAL_%SREPO_URL", id, "https://usw1.packages.broadcom.com" + path) def username = fromEnv("COMMERCIAL_%SREPO_USERNAME", id) def password = fromEnv("COMMERCIAL_%SREPO_PASSWORD", id) - addRepository(name, url, { maven -> + addRepository(name, snapshot, url, { maven -> maven.credentials { credentials -> credentials.setUsername(username) credentials.setPassword(password) @@ -131,10 +131,17 @@ class SpringRepositoriesExtension { }) } - private void addRepository(name, url, action) { + private void addRepository(name, snapshot, url, action) { this.repositories.maven { maven -> maven.setName(name) maven.setUrl(url) + maven.content { content -> + if (snapshot) { + content.snapshotsOnly() + } else { + content.releasesOnly() + } + } action(maven) } } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/RepositoryTransformersExtension.java b/buildSrc/src/main/java/org/springframework/boot/build/RepositoryTransformersExtension.java index e24d5b71c25..3bc3df452f7 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/RepositoryTransformersExtension.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/RepositoryTransformersExtension.java @@ -17,7 +17,12 @@ package org.springframework.boot.build; import java.net.URI; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; import java.util.function.BiFunction; +import java.util.function.Function; import javax.inject.Inject; @@ -96,19 +101,34 @@ public class RepositoryTransformersExtension { private String transform(String line, BiFunction generator) { StringBuilder result = new StringBuilder(); String indent = getIndent(line); - this.project.getRepositories().withType(MavenArtifactRepository.class, (repository) -> { - String name = repository.getName(); - if (name.startsWith("spring-")) { - String fragment = generator.apply(repository, indent); - if (fragment != null) { - result.append(!result.isEmpty() ? "\n" : ""); - result.append(fragment); - } + getSpringRepositories().forEach((repository) -> { + String fragment = generator.apply(repository, indent); + if (fragment != null) { + result.append(!result.isEmpty() ? "\n" : ""); + result.append(fragment); } }); return result.toString(); } + private List getSpringRepositories() { + List springRepositories = new ArrayList<>(this.project.getRepositories() + .withType(MavenArtifactRepository.class) + .stream() + .filter(this::isSpringReposirory) + .toList()); + Function bySnapshots = (repository) -> repository.getName() + .contains("snapshot"); + Function byName = null; + Collections.sort(springRepositories, Comparator.comparing(bySnapshots).thenComparing(byName)); + System.err.println(">>>> " + springRepositories); + return springRepositories; + } + + private boolean isSpringReposirory(MavenArtifactRepository repository) { + return (repository.getName().startsWith("spring-")); + } + private String getIndent(String line) { return line.substring(0, line.length() - line.stripLeading().length()); }