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 d77fed6556c..74772a8ef44 100644
--- a/buildSrc/src/main/java/org/springframework/boot/build/RepositoryTransformersExtension.java
+++ b/buildSrc/src/main/java/org/springframework/boot/build/RepositoryTransformersExtension.java
@@ -20,7 +20,9 @@ import java.net.URI;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import java.util.function.BiFunction;
import java.util.function.Function;
@@ -37,6 +39,8 @@ import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
*/
public class RepositoryTransformersExtension {
+ private static final String CREDENTIALS_MARKER = "{spring.mavenCredentials}";
+
private static final String REPOSITORIES_MARKER = "{spring.mavenRepositories}";
private static final String PLUGIN_REPOSITORIES_MARKER = "{spring.mavenPluginRepositories}";
@@ -60,6 +64,19 @@ public class RepositoryTransformersExtension {
return "%s".formatted(indent, name, url);
});
}
+ if (line.contains(CREDENTIALS_MARKER)) {
+ Map hostCredentials = new LinkedHashMap<>();
+ getSpringRepositories().forEach((repository) -> {
+ if (repository.getName().startsWith("spring-commercial-")) {
+ String host = repository.getUrl().getHost();
+ hostCredentials.put(host,
+ new MavenCredential("${env.COMMERCIAL_REPO_USERNAME}", "${env.COMMERCIAL_REPO_PASSWORD"));
+ }
+ });
+ return transform(line, hostCredentials.entrySet(), (entry,
+ indent) -> "%s%n"
+ .formatted(indent, entry.getKey(), entry.getValue().username(), entry.getValue().password()));
+ }
return line;
}
@@ -99,10 +116,14 @@ public class RepositoryTransformersExtension {
}
private String transform(String line, BiFunction generator) {
+ return transform(line, getSpringRepositories(), generator);
+ }
+
+ private String transform(String line, Iterable iterable, BiFunction generator) {
StringBuilder result = new StringBuilder();
String indent = getIndent(line);
- getSpringRepositories().forEach((repository) -> {
- String fragment = generator.apply(repository, indent);
+ iterable.forEach((item) -> {
+ String fragment = generator.apply(item, indent);
if (fragment != null) {
result.append(!result.isEmpty() ? "\n" : "");
result.append(fragment);
@@ -136,4 +157,8 @@ public class RepositoryTransformersExtension {
project.getExtensions().create("springRepositoryTransformers", RepositoryTransformersExtension.class, project);
}
+ record MavenCredential(String username, String password) {
+
+ }
+
}
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 f9d3011e630..470a19bc53b 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
@@ -2,7 +2,6 @@
-
@@ -11,6 +10,5 @@
-
-
+
diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-ant/ivysettings.xml b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-ant/ivysettings.xml
index 51cf26e3633..91bec08ae53 100644
--- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-ant/ivysettings.xml
+++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-ant/ivysettings.xml
@@ -3,7 +3,6 @@
-
@@ -12,4 +11,5 @@
+