From 754fabab2064554cf51bcba53fa7b8ad2919c989 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Mon, 3 Feb 2025 21:18:52 -0800 Subject: [PATCH] Fixup 'Limit artifact types resolved from repositories' --- buildSrc/SpringRepositorySupport.groovy | 6 ++--- .../RepositoryTransformersExtension.java | 3 +-- .../SpringRepositoriesExtensionTests.java | 22 +++++++++++++++++++ 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/buildSrc/SpringRepositorySupport.groovy b/buildSrc/SpringRepositorySupport.groovy index 2cdd5292811..b3ad5c8f352 100644 --- a/buildSrc/SpringRepositorySupport.groovy +++ b/buildSrc/SpringRepositorySupport.groovy @@ -135,11 +135,11 @@ class SpringRepositoriesExtension { this.repositories.maven { maven -> maven.setName(name) maven.setUrl(url) - maven.content { content -> + maven.mavenContent { mavenContent -> if (snapshot) { - content.snapshotsOnly() + mavenContent.snapshotsOnly() } else { - content.releasesOnly() + mavenContent.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 3bc3df452f7..37965364587 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/RepositoryTransformersExtension.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/RepositoryTransformersExtension.java @@ -119,9 +119,8 @@ public class RepositoryTransformersExtension { .toList()); Function bySnapshots = (repository) -> repository.getName() .contains("snapshot"); - Function byName = null; + Function byName = MavenArtifactRepository::getName; Collections.sort(springRepositories, Comparator.comparing(bySnapshots).thenComparing(byName)); - System.err.println(">>>> " + springRepositories); return springRepositories; } diff --git a/buildSrc/src/test/java/org/springframework/boot/build/groovyscripts/SpringRepositoriesExtensionTests.java b/buildSrc/src/test/java/org/springframework/boot/build/groovyscripts/SpringRepositoriesExtensionTests.java index 5458b600dff..4da9471d54e 100644 --- a/buildSrc/src/test/java/org/springframework/boot/build/groovyscripts/SpringRepositoriesExtensionTests.java +++ b/buildSrc/src/test/java/org/springframework/boot/build/groovyscripts/SpringRepositoriesExtensionTests.java @@ -31,6 +31,7 @@ import groovy.lang.GroovyClassLoader; import org.gradle.api.Action; import org.gradle.api.artifacts.dsl.RepositoryHandler; import org.gradle.api.artifacts.repositories.MavenArtifactRepository; +import org.gradle.api.artifacts.repositories.MavenRepositoryContentDescriptor; import org.gradle.api.artifacts.repositories.PasswordCredentials; import org.gradle.api.artifacts.repositories.RepositoryContentDescriptor; import org.junit.jupiter.api.AfterAll; @@ -73,6 +74,8 @@ class SpringRepositoriesExtensionTests { private final List credentials = new ArrayList<>(); + private final List mavenContent = new ArrayList<>(); + @Test void mavenRepositoriesWhenNotCommercialSnapshot() { SpringRepositoriesExtension extension = createExtension("0.0.0-SNAPSHOT", "oss"); @@ -80,8 +83,10 @@ class SpringRepositoriesExtensionTests { assertThat(this.repositories).hasSize(2); verify(this.repositories.get(0)).setName("spring-oss-milestone"); verify(this.repositories.get(0)).setUrl("https://repo.spring.io/milestone"); + verify(this.mavenContent.get(0)).releasesOnly(); verify(this.repositories.get(1)).setName("spring-oss-snapshot"); verify(this.repositories.get(1)).setUrl("https://repo.spring.io/snapshot"); + verify(this.mavenContent.get(1)).snapshotsOnly(); } @Test @@ -92,12 +97,16 @@ class SpringRepositoriesExtensionTests { verify(this.repositories.get(0)).setName("spring-commercial-release"); verify(this.repositories.get(0)) .setUrl("https://usw1.packages.broadcom.com/spring-enterprise-maven-prod-local"); + verify(this.mavenContent.get(0)).releasesOnly(); verify(this.repositories.get(1)).setName("spring-oss-milestone"); verify(this.repositories.get(1)).setUrl("https://repo.spring.io/milestone"); + verify(this.mavenContent.get(1)).releasesOnly(); verify(this.repositories.get(2)).setName("spring-commercial-snapshot"); verify(this.repositories.get(2)).setUrl("https://usw1.packages.broadcom.com/spring-enterprise-maven-dev-local"); + verify(this.mavenContent.get(2)).snapshotsOnly(); verify(this.repositories.get(3)).setName("spring-oss-snapshot"); verify(this.repositories.get(3)).setUrl("https://repo.spring.io/snapshot"); + verify(this.mavenContent.get(3)).snapshotsOnly(); } @Test @@ -107,6 +116,7 @@ class SpringRepositoriesExtensionTests { assertThat(this.repositories).hasSize(1); verify(this.repositories.get(0)).setName("spring-oss-milestone"); verify(this.repositories.get(0)).setUrl("https://repo.spring.io/milestone"); + verify(this.mavenContent.get(0)).releasesOnly(); } @Test @@ -117,8 +127,10 @@ class SpringRepositoriesExtensionTests { verify(this.repositories.get(0)).setName("spring-commercial-release"); verify(this.repositories.get(0)) .setUrl("https://usw1.packages.broadcom.com/spring-enterprise-maven-prod-local"); + verify(this.mavenContent.get(0)).releasesOnly(); verify(this.repositories.get(1)).setName("spring-oss-milestone"); verify(this.repositories.get(1)).setUrl("https://repo.spring.io/milestone"); + verify(this.mavenContent.get(1)).releasesOnly(); } @Test @@ -136,6 +148,7 @@ class SpringRepositoriesExtensionTests { verify(this.repositories.get(0)).setName("spring-commercial-release"); verify(this.repositories.get(0)) .setUrl("https://usw1.packages.broadcom.com/spring-enterprise-maven-prod-local"); + verify(this.mavenContent.get(0)).releasesOnly(); } @Test @@ -217,6 +230,7 @@ class SpringRepositoriesExtensionTests { MavenArtifactRepository repository = mock(MavenArtifactRepository.class); willAnswer(this::contentAction).given(repository).content(any(Action.class)); willAnswer(this::credentialsAction).given(repository).credentials(any(Action.class)); + willAnswer(this::mavenContentAction).given(repository).mavenContent(any(Action.class)); Closure closure = invocation.getArgument(0); closure.call(repository); this.repositories.add(repository); @@ -239,6 +253,14 @@ class SpringRepositoriesExtensionTests { return null; } + private Object mavenContentAction(InvocationOnMock invocation) { + MavenRepositoryContentDescriptor mavenContent = mock(MavenRepositoryContentDescriptor.class); + Action action = invocation.getArgument(0); + action.execute(mavenContent); + this.mavenContent.add(mavenContent); + return null; + } + interface SpringRepositoriesExtension { void mavenRepositories();