From 80e8ab877960ff4daec28330695a0ee8f3153704 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Mon, 3 Feb 2025 16:55:32 -0800 Subject: [PATCH] Support commercial repositories in effective BOM and Ivy Update `BomExtension` to resolve '{spring.mavenRepositories}' and add credentials to `ivysettings.xml` and `settings.xml`. Closes gh-44050 --- .../springframework/boot/build/bom/BomExtension.java | 9 +++++++-- .../src/main/resources/effective-bom-settings.xml | 12 +----------- .../spring-boot-antlib/src/it/sample/ivysettings.xml | 3 ++- .../src/intTest/projects/settings.xml | 12 ++++++++++++ 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java b/buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java index c36c361d43..4a17cbec05 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java @@ -59,6 +59,7 @@ import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.springframework.boot.build.DeployedPlugin; +import org.springframework.boot.build.RepositoryTransformersExtension; import org.springframework.boot.build.bom.Library.Exclusion; import org.springframework.boot.build.bom.Library.Group; import org.springframework.boot.build.bom.Library.LibraryVersion; @@ -132,6 +133,8 @@ public class BomExtension { public void effectiveBomArtifact() { Configuration effectiveBomConfiguration = this.project.getConfigurations().create("effectiveBom"); + RepositoryTransformersExtension repositoryTransformers = this.project.getExtensions() + .getByType(RepositoryTransformersExtension.class); this.project.getTasks() .matching((task) -> task.getName().equals(DeployedPlugin.GENERATE_POM_TASK_NAME)) .all((task) -> { @@ -144,8 +147,10 @@ public class BomExtension { sync.dependsOn(task); sync.setDestinationDir(generatedBomDir); sync.from(((GenerateMavenPom) task).getDestination(), (pom) -> pom.rename((name) -> "pom.xml")); - sync.from(this.project.getResources().getText().fromString(loadSettingsXml()), - (settingsXml) -> settingsXml.rename((name) -> "settings.xml")); + sync.from(this.project.getResources().getText().fromString(loadSettingsXml()), (settingsXml) -> { + settingsXml.rename((name) -> "settings.xml"); + settingsXml.filter(repositoryTransformers.mavenSettings()); + }); }); File effectiveBom = this.project.getLayout() .getBuildDirectory() diff --git a/buildSrc/src/main/resources/effective-bom-settings.xml b/buildSrc/src/main/resources/effective-bom-settings.xml index d67307453c..e2bb652e24 100644 --- a/buildSrc/src/main/resources/effective-bom-settings.xml +++ b/buildSrc/src/main/resources/effective-bom-settings.xml @@ -7,17 +7,7 @@ true - - spring-snapshot - https://repo.spring.io/snapshot - - true - - - - spring-milestone - https://repo.spring.io/milestone - + diff --git a/spring-boot-project/spring-boot-tools/spring-boot-antlib/src/it/sample/ivysettings.xml b/spring-boot-project/spring-boot-tools/spring-boot-antlib/src/it/sample/ivysettings.xml index 2d04a1ad21..f9d3011e63 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-antlib/src/it/sample/ivysettings.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-antlib/src/it/sample/ivysettings.xml @@ -11,5 +11,6 @@ + + - \ No newline at end of file diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/settings.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/settings.xml index 527bb28dd2..f2dd579883 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/settings.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/settings.xml @@ -1,6 +1,18 @@ @localRepositoryPath@ + + + spring-commercial-release + ${env.COMMERCIAL_REPO_USERNAME} + ${env.COMMERCIAL_REPO_PASSWORD} + + + spring-commercial-snapshot + ${env.COMMERCIAL_REPO_USERNAME} + ${env.COMMERCIAL_REPO_PASSWORD} + + it-repo