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 982594f4266..e24d5b71c25 100644
--- a/buildSrc/src/main/java/org/springframework/boot/build/RepositoryTransformersExtension.java
+++ b/buildSrc/src/main/java/org/springframework/boot/build/RepositoryTransformersExtension.java
@@ -16,6 +16,9 @@
package org.springframework.boot.build;
+import java.net.URI;
+import java.util.function.BiFunction;
+
import javax.inject.Inject;
import org.gradle.api.Project;
@@ -29,9 +32,9 @@ import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
*/
public class RepositoryTransformersExtension {
- private static final String MARKER = "{spring.mavenRepositories}";
+ private static final String REPOSITORIES_MARKER = "{spring.mavenRepositories}";
- private static final String MARKER_PLUGIN = "{spring.mavenPluginRepositories}";
+ private static final String PLUGIN_REPOSITORIES_MARKER = "{spring.mavenPluginRepositories}";
private final Project project;
@@ -45,18 +48,12 @@ public class RepositoryTransformersExtension {
}
private String transformAnt(String line) {
- if (line.contains(MARKER)) {
- StringBuilder result = new StringBuilder();
- String indent = getIndent(line);
- this.project.getRepositories().withType(MavenArtifactRepository.class, (repository) -> {
+ if (line.contains(REPOSITORIES_MARKER)) {
+ return transform(line, (repository, indent) -> {
String name = repository.getName();
- if (name.startsWith("spring-")) {
- result.append(!result.isEmpty() ? "\n" : "");
- result.append("%s".formatted(indent, name,
- repository.getUrl()));
- }
+ URI url = repository.getUrl();
+ return "%s".formatted(indent, name, url);
});
- return result.toString();
}
return line;
}
@@ -66,26 +63,17 @@ public class RepositoryTransformersExtension {
}
private String transformMavenSettings(String line) {
- if (line.contains(MARKER)) {
- return transformMarker(line, false);
+ if (line.contains(REPOSITORIES_MARKER)) {
+ return transformMavenRepositories(line, false);
}
- if (line.contains(MARKER_PLUGIN)) {
- return transformMarker(line, true);
+ if (line.contains(PLUGIN_REPOSITORIES_MARKER)) {
+ return transformMavenRepositories(line, true);
}
return line;
}
- private String transformMarker(String line, boolean pluginRepository) {
- StringBuilder result = new StringBuilder();
- String indent = getIndent(line);
- this.project.getRepositories().withType(MavenArtifactRepository.class, (repository) -> {
- String name = repository.getName();
- if (name.startsWith("spring-")) {
- result.append(!result.isEmpty() ? "\n" : "");
- result.append(mavenRepositoryXml(indent, repository, pluginRepository));
- }
- });
- return result.toString();
+ private String transformMavenRepositories(String line, boolean pluginRepository) {
+ return transform(line, (repository, indent) -> mavenRepositoryXml(indent, repository, pluginRepository));
}
private String mavenRepositoryXml(String indent, MavenArtifactRepository repository, boolean pluginRepository) {
@@ -105,6 +93,22 @@ public class RepositoryTransformersExtension {
return xml.toString();
}
+ 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);
+ }
+ }
+ });
+ return result.toString();
+ }
+
private String getIndent(String line) {
return line.substring(0, line.length() - line.stripLeading().length());
}
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 5f4eb3eb415..0c880431528 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 d67307453cf..e2bb652e248 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 2d04a1ad21b..f9d3011e630 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 527bb28dd21..f2dd5798838 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