mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-09-17 12:09:16 +00:00
Add credentials to ivy settings to support commercial builds
Closes gh-46824
This commit is contained in:
+27
-2
@@ -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<ibiblio name=\"%s\" m2compatible=\"true\" root=\"%s\" />".formatted(indent, name, url);
|
||||
});
|
||||
}
|
||||
if (line.contains(CREDENTIALS_MARKER)) {
|
||||
Map<String, MavenCredential> 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<credentials host=\"%s\" realm=\"Artifactory Realm\" username=\"%s\" passwd=\"%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<MavenArtifactRepository, String, String> generator) {
|
||||
return transform(line, getSpringRepositories(), generator);
|
||||
}
|
||||
|
||||
private <T> String transform(String line, Iterable<T> iterable, BiFunction<T, String, String> 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) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-3
@@ -2,7 +2,6 @@
|
||||
<settings defaultResolver="chain" />
|
||||
<resolvers>
|
||||
<chain name="chain">
|
||||
<!-- NOTE: You should declare only repositories that you need here -->
|
||||
<filesystem name="local" local="true" m2compatible="true">
|
||||
<artifact pattern="${user.home}/.m2/[organisation]/[module]/[revision]/[module]-[revision].[ext]" />
|
||||
<ivy pattern="${user.home}/.m2/[organisation]/[module]/[revision]/[module]-[revision].pom" />
|
||||
@@ -11,6 +10,5 @@
|
||||
<!-- {spring.mavenRepositories} -->
|
||||
</chain>
|
||||
</resolvers>
|
||||
<credentials host="${env.COMMERCIAL_RELEASE_REPO_URL}" username="${env.COMMERCIAL_REPO_USERNAME}" passwd="${env.COMMERCIAL_REPO_PASSWORD}"/>
|
||||
<credentials host="${env.COMMERCIAL_SNAPSHOT_REPO_URL}" username="${env.COMMERCIAL_REPO_USERNAME}" passwd="${env.COMMERCIAL_REPO_PASSWORD}"/>
|
||||
<!-- {spring.mavenCredentials} -->
|
||||
</ivysettings>
|
||||
|
||||
+1
-1
@@ -3,7 +3,6 @@
|
||||
<caches defaultCacheDir="${projectDir}/build/ivy-cache"/>
|
||||
<resolvers>
|
||||
<chain name="chain" returnFirst="true">
|
||||
<!-- NOTE: You should declare only repositories that you need here -->
|
||||
<filesystem name="local" local="true" m2compatible="true">
|
||||
<artifact pattern="${projectDir}/build/test-repository/[organisation]/[module]/[revision]/[module]-[revision].[ext]" />
|
||||
<ivy pattern="${projectDir}/build/test-repository/[organisation]/[module]/[revision]/[module]-[revision].pom" />
|
||||
@@ -12,4 +11,5 @@
|
||||
<!-- {spring.mavenRepositories} -->
|
||||
</chain>
|
||||
</resolvers>
|
||||
<!-- {spring.mavenCredentials} -->
|
||||
</ivysettings>
|
||||
|
||||
Reference in New Issue
Block a user