diff --git a/build-plugin/spring-boot-maven-plugin/src/intTest/projects/settings.xml b/build-plugin/spring-boot-maven-plugin/src/intTest/projects/settings.xml
index f2dd5798838..33d7bb0f990 100644
--- a/build-plugin/spring-boot-maven-plugin/src/intTest/projects/settings.xml
+++ b/build-plugin/spring-boot-maven-plugin/src/intTest/projects/settings.xml
@@ -12,6 +12,11 @@
${env.COMMERCIAL_REPO_USERNAME}
${env.COMMERCIAL_REPO_PASSWORD}
+
+ spring-release-train
+ ${env.RELEASE_TRAIN_MAVEN_REPOSITORY_USERNAME}
+ ${env.RELEASE_TRAIN_MAVEN_REPOSITORY_PASSWORD}
+
diff --git a/buildSrc/SpringRepositorySupport.groovy b/buildSrc/SpringRepositorySupport.groovy
index b3f5e5dfd04..b6bf3b5155f 100644
--- a/buildSrc/SpringRepositorySupport.groovy
+++ b/buildSrc/SpringRepositorySupport.groovy
@@ -104,6 +104,7 @@ class SpringRepositoriesExtension {
}
private void addRepositories(version, action) {
+ addReleaseTrainRepositoryIfNecessary("spring-release-train", action)
addCommercialRepositoryIfNecessary("release", false, "/spring-enterprise-maven-prod-local", action)
if (version.endsWith("-SNAPSHOT")) {
addCommercialRepositoryIfNecessary("snapshot", true, "/spring-enterprise-maven-dev-local", action)
@@ -132,6 +133,21 @@ class SpringRepositoriesExtension {
})
}
+ private void addReleaseTrainRepositoryIfNecessary(id, action) {
+ def url = this.environment.apply("RELEASE_TRAIN_MAVEN_REPOSITORY_URL")
+ if (url != null) {
+ def username = this.environment.apply("RELEASE_TRAIN_MAVEN_REPOSITORY_USERNAME")
+ def password = this.environment.apply("RELEASE_TRAIN_MAVEN_REPOSITORY_PASSWORD")
+ addRepository(id, false, url, { maven ->
+ maven.credentials { credentials ->
+ credentials.setUsername(username)
+ credentials.setPassword(password)
+ }
+ action(maven)
+ })
+ }
+ }
+
private void addRepository(name, snapshot, url, action) {
this.repositories.maven { maven ->
maven.setName(name)
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 2b1f70f6242..606bdf4ee6f 100644
--- a/buildSrc/src/main/java/org/springframework/boot/build/RepositoryTransformersExtension.java
+++ b/buildSrc/src/main/java/org/springframework/boot/build/RepositoryTransformersExtension.java
@@ -43,6 +43,8 @@ public class RepositoryTransformersExtension {
private static final String REPOSITORIES_MARKER = "{spring.mavenRepositories}";
+ private static final String PLUGIN_REPOSITORIES_MARKER = "{spring.mavenPluginRepositories}";
+
private final Project project;
@Inject
@@ -67,13 +69,33 @@ public class RepositoryTransformersExtension {
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}"));
+ hostCredentials.put(host, new MavenCredential("${env.COMMERCIAL_REPO_USERNAME}",
+ "${env.COMMERCIAL_REPO_PASSWORD}", "Artifactory Realm"));
+ }
+ else if (repository.getName().equals("spring-release-train")) {
+ String host = repository.getUrl().getHost();
+ hostCredentials.put(host, new MavenCredential("${env.RELEASE_TRAIN_MAVEN_REPOSITORY_USERNAME}",
+ "${env.RELEASE_TRAIN_MAVEN_REPOSITORY_PASSWORD}", "GitHub Package Registry"));
}
});
- return transform(line, hostCredentials.entrySet(), (entry,
- indent) -> "%s%n"
- .formatted(indent, entry.getKey(), entry.getValue().username(), entry.getValue().password()));
+ return transform(line, hostCredentials.entrySet(),
+ (entry, indent) -> "%s%n"
+ .formatted(indent, entry.getKey(), entry.getValue().realm(), entry.getValue().username(),
+ entry.getValue().password()));
+ }
+ return line;
+ }
+
+ public Transformer mavenSettings() {
+ return this::transformMavenSettings;
+ }
+
+ private String transformMavenSettings(String line) {
+ if (line.contains(REPOSITORIES_MARKER)) {
+ return transformMavenRepositories(line, false);
+ }
+ if (line.contains(PLUGIN_REPOSITORIES_MARKER)) {
+ return transformMavenRepositories(line, true);
}
return line;
}
@@ -141,7 +163,7 @@ public class RepositoryTransformersExtension {
project.getExtensions().create("springRepositoryTransformers", RepositoryTransformersExtension.class, project);
}
- record MavenCredential(String username, String password) {
+ record MavenCredential(String username, String password, String realm) {
}