Skip to content

Commit 2e54aa6

Browse files
committed
Merge branch '3.5.x'
Closes gh-48160
2 parents 2bb967d + c3c983f commit 2e54aa6

File tree

3 files changed

+29
-6
lines changed

3 files changed

+29
-6
lines changed

build-plugin/spring-boot-antlib/src/it/sample/ivysettings.xml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
<settings defaultResolver="chain" />
33
<resolvers>
44
<chain name="chain">
5-
<!-- NOTE: You should declare only repositories that you need here -->
65
<filesystem name="local" local="true" m2compatible="true">
76
<artifact pattern="${user.home}/.m2/[organisation]/[module]/[revision]/[module]-[revision].[ext]" />
87
<ivy pattern="${user.home}/.m2/[organisation]/[module]/[revision]/[module]-[revision].pom" />
@@ -11,6 +10,5 @@
1110
<!-- {spring.mavenRepositories} -->
1211
</chain>
1312
</resolvers>
14-
<credentials host="${env.COMMERCIAL_RELEASE_REPO_URL}" username="${env.COMMERCIAL_REPO_USERNAME}" passwd="${env.COMMERCIAL_REPO_PASSWORD}"/>
15-
<credentials host="${env.COMMERCIAL_SNAPSHOT_REPO_URL}" username="${env.COMMERCIAL_REPO_USERNAME}" passwd="${env.COMMERCIAL_REPO_PASSWORD}"/>
13+
<!-- {spring.mavenCredentials} -->
1614
</ivysettings>

buildSrc/src/main/java/org/springframework/boot/build/RepositoryTransformersExtension.java

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@
2020
import java.util.ArrayList;
2121
import java.util.Collections;
2222
import java.util.Comparator;
23+
import java.util.LinkedHashMap;
2324
import java.util.List;
25+
import java.util.Map;
2426
import java.util.function.BiFunction;
2527
import java.util.function.Function;
2628

@@ -37,6 +39,8 @@
3739
*/
3840
public class RepositoryTransformersExtension {
3941

42+
private static final String CREDENTIALS_MARKER = "{spring.mavenCredentials}";
43+
4044
private static final String REPOSITORIES_MARKER = "{spring.mavenRepositories}";
4145

4246
private static final String PLUGIN_REPOSITORIES_MARKER = "{spring.mavenPluginRepositories}";
@@ -60,6 +64,19 @@ private String transformAnt(String line) {
6064
return "%s<ibiblio name=\"%s\" m2compatible=\"true\" root=\"%s\" />".formatted(indent, name, url);
6165
});
6266
}
67+
if (line.contains(CREDENTIALS_MARKER)) {
68+
Map<String, MavenCredential> hostCredentials = new LinkedHashMap<>();
69+
getSpringRepositories().forEach((repository) -> {
70+
if (repository.getName().startsWith("spring-commercial-")) {
71+
String host = repository.getUrl().getHost();
72+
hostCredentials.put(host,
73+
new MavenCredential("${env.COMMERCIAL_REPO_USERNAME}", "${env.COMMERCIAL_REPO_PASSWORD"));
74+
}
75+
});
76+
return transform(line, hostCredentials.entrySet(), (entry,
77+
indent) -> "%s<credentials host=\"%s\" realm=\"Artifactory Realm\" username=\"%s\" passwd=\"%s\" />%n"
78+
.formatted(indent, entry.getKey(), entry.getValue().username(), entry.getValue().password()));
79+
}
6380
return line;
6481
}
6582

@@ -99,10 +116,14 @@ private String mavenRepositoryXml(String indent, MavenArtifactRepository reposit
99116
}
100117

101118
private String transform(String line, BiFunction<MavenArtifactRepository, String, String> generator) {
119+
return transform(line, getSpringRepositories(), generator);
120+
}
121+
122+
private <T> String transform(String line, Iterable<T> iterable, BiFunction<T, String, String> generator) {
102123
StringBuilder result = new StringBuilder();
103124
String indent = getIndent(line);
104-
getSpringRepositories().forEach((repository) -> {
105-
String fragment = generator.apply(repository, indent);
125+
iterable.forEach((item) -> {
126+
String fragment = generator.apply(item, indent);
106127
if (fragment != null) {
107128
result.append(!result.isEmpty() ? "\n" : "");
108129
result.append(fragment);
@@ -136,4 +157,8 @@ static void apply(Project project) {
136157
project.getExtensions().create("springRepositoryTransformers", RepositoryTransformersExtension.class, project);
137158
}
138159

160+
record MavenCredential(String username, String password) {
161+
162+
}
163+
139164
}

smoke-test/spring-boot-smoke-test-ant/ivysettings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
<caches defaultCacheDir="${projectDir}/build/ivy-cache"/>
44
<resolvers>
55
<chain name="chain" returnFirst="true">
6-
<!-- NOTE: You should declare only repositories that you need here -->
76
<filesystem name="local" local="true" m2compatible="true">
87
<artifact pattern="${projectDir}/build/test-repository/[organisation]/[module]/[revision]/[module]-[revision].[ext]" />
98
<ivy pattern="${projectDir}/build/test-repository/[organisation]/[module]/[revision]/[module]-[revision].pom" />
@@ -12,4 +11,5 @@
1211
<!-- {spring.mavenRepositories} -->
1312
</chain>
1413
</resolvers>
14+
<!-- {spring.mavenCredentials} -->
1515
</ivysettings>

0 commit comments

Comments
 (0)