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) { }