2020import java .util .ArrayList ;
2121import java .util .Collections ;
2222import java .util .Comparator ;
23+ import java .util .LinkedHashMap ;
2324import java .util .List ;
25+ import java .util .Map ;
2426import java .util .function .BiFunction ;
2527import java .util .function .Function ;
2628
3739 */
3840public 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}
0 commit comments