commit
0ec15c8f9b
|
@ -16,6 +16,9 @@
|
|||
|
||||
package org.springframework.boot.build;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.function.BiFunction;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.gradle.api.Project;
|
||||
|
@ -29,9 +32,9 @@ import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
|
|||
*/
|
||||
public class RepositoryTransformersExtension {
|
||||
|
||||
private static final String MARKER = "{spring.mavenRepositories}";
|
||||
private static final String REPOSITORIES_MARKER = "{spring.mavenRepositories}";
|
||||
|
||||
private static final String MARKER_PLUGIN = "{spring.mavenPluginRepositories}";
|
||||
private static final String PLUGIN_REPOSITORIES_MARKER = "{spring.mavenPluginRepositories}";
|
||||
|
||||
private final Project project;
|
||||
|
||||
|
@ -45,18 +48,12 @@ public class RepositoryTransformersExtension {
|
|||
}
|
||||
|
||||
private String transformAnt(String line) {
|
||||
if (line.contains(MARKER)) {
|
||||
StringBuilder result = new StringBuilder();
|
||||
String indent = getIndent(line);
|
||||
this.project.getRepositories().withType(MavenArtifactRepository.class, (repository) -> {
|
||||
if (line.contains(REPOSITORIES_MARKER)) {
|
||||
return transform(line, (repository, indent) -> {
|
||||
String name = repository.getName();
|
||||
if (name.startsWith("spring-")) {
|
||||
result.append(!result.isEmpty() ? "\n" : "");
|
||||
result.append("%s<ibiblio name=\"%s\" m2compatible=\"true\" root=\"%s\" />".formatted(indent, name,
|
||||
repository.getUrl()));
|
||||
}
|
||||
URI url = repository.getUrl();
|
||||
return "%s<ibiblio name=\"%s\" m2compatible=\"true\" root=\"%s\" />".formatted(indent, name, url);
|
||||
});
|
||||
return result.toString();
|
||||
}
|
||||
return line;
|
||||
}
|
||||
|
@ -66,26 +63,17 @@ public class RepositoryTransformersExtension {
|
|||
}
|
||||
|
||||
private String transformMavenSettings(String line) {
|
||||
if (line.contains(MARKER)) {
|
||||
return transformMarker(line, false);
|
||||
if (line.contains(REPOSITORIES_MARKER)) {
|
||||
return transformMavenRepositories(line, false);
|
||||
}
|
||||
if (line.contains(MARKER_PLUGIN)) {
|
||||
return transformMarker(line, true);
|
||||
if (line.contains(PLUGIN_REPOSITORIES_MARKER)) {
|
||||
return transformMavenRepositories(line, true);
|
||||
}
|
||||
return line;
|
||||
}
|
||||
|
||||
private String transformMarker(String line, boolean pluginRepository) {
|
||||
StringBuilder result = new StringBuilder();
|
||||
String indent = getIndent(line);
|
||||
this.project.getRepositories().withType(MavenArtifactRepository.class, (repository) -> {
|
||||
String name = repository.getName();
|
||||
if (name.startsWith("spring-")) {
|
||||
result.append(!result.isEmpty() ? "\n" : "");
|
||||
result.append(mavenRepositoryXml(indent, repository, pluginRepository));
|
||||
}
|
||||
});
|
||||
return result.toString();
|
||||
private String transformMavenRepositories(String line, boolean pluginRepository) {
|
||||
return transform(line, (repository, indent) -> mavenRepositoryXml(indent, repository, pluginRepository));
|
||||
}
|
||||
|
||||
private String mavenRepositoryXml(String indent, MavenArtifactRepository repository, boolean pluginRepository) {
|
||||
|
@ -105,6 +93,22 @@ public class RepositoryTransformersExtension {
|
|||
return xml.toString();
|
||||
}
|
||||
|
||||
private String transform(String line, BiFunction<MavenArtifactRepository, String, String> generator) {
|
||||
StringBuilder result = new StringBuilder();
|
||||
String indent = getIndent(line);
|
||||
this.project.getRepositories().withType(MavenArtifactRepository.class, (repository) -> {
|
||||
String name = repository.getName();
|
||||
if (name.startsWith("spring-")) {
|
||||
String fragment = generator.apply(repository, indent);
|
||||
if (fragment != null) {
|
||||
result.append(!result.isEmpty() ? "\n" : "");
|
||||
result.append(fragment);
|
||||
}
|
||||
}
|
||||
});
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
private String getIndent(String line) {
|
||||
return line.substring(0, line.length() - line.stripLeading().length());
|
||||
}
|
||||
|
|
|
@ -59,6 +59,7 @@ import org.w3c.dom.Document;
|
|||
import org.w3c.dom.NodeList;
|
||||
|
||||
import org.springframework.boot.build.DeployedPlugin;
|
||||
import org.springframework.boot.build.RepositoryTransformersExtension;
|
||||
import org.springframework.boot.build.bom.Library.Exclusion;
|
||||
import org.springframework.boot.build.bom.Library.Group;
|
||||
import org.springframework.boot.build.bom.Library.LibraryVersion;
|
||||
|
@ -132,6 +133,8 @@ public class BomExtension {
|
|||
|
||||
public void effectiveBomArtifact() {
|
||||
Configuration effectiveBomConfiguration = this.project.getConfigurations().create("effectiveBom");
|
||||
RepositoryTransformersExtension repositoryTransformers = this.project.getExtensions()
|
||||
.getByType(RepositoryTransformersExtension.class);
|
||||
this.project.getTasks()
|
||||
.matching((task) -> task.getName().equals(DeployedPlugin.GENERATE_POM_TASK_NAME))
|
||||
.all((task) -> {
|
||||
|
@ -144,8 +147,10 @@ public class BomExtension {
|
|||
sync.dependsOn(task);
|
||||
sync.setDestinationDir(generatedBomDir);
|
||||
sync.from(((GenerateMavenPom) task).getDestination(), (pom) -> pom.rename((name) -> "pom.xml"));
|
||||
sync.from(this.project.getResources().getText().fromString(loadSettingsXml()),
|
||||
(settingsXml) -> settingsXml.rename((name) -> "settings.xml"));
|
||||
sync.from(this.project.getResources().getText().fromString(loadSettingsXml()), (settingsXml) -> {
|
||||
settingsXml.rename((name) -> "settings.xml");
|
||||
settingsXml.filter(repositoryTransformers.mavenSettings());
|
||||
});
|
||||
});
|
||||
File effectiveBom = this.project.getLayout()
|
||||
.getBuildDirectory()
|
||||
|
|
|
@ -7,17 +7,7 @@
|
|||
<activeByDefault>true</activeByDefault>
|
||||
</activation>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>spring-snapshot</id>
|
||||
<url>https://repo.spring.io/snapshot</url>
|
||||
<snapshots>
|
||||
<enabled>true</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>spring-milestone</id>
|
||||
<url>https://repo.spring.io/milestone</url>
|
||||
</repository>
|
||||
<!-- {spring.mavenRepositories} -->
|
||||
</repositories>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
|
|
@ -11,5 +11,6 @@
|
|||
<!-- {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}"/>
|
||||
</ivysettings>
|
||||
|
|
@ -1,6 +1,18 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<settings>
|
||||
<localRepository>@localRepositoryPath@</localRepository>
|
||||
<servers>
|
||||
<server>
|
||||
<id>spring-commercial-release</id>
|
||||
<username>${env.COMMERCIAL_REPO_USERNAME}</username>
|
||||
<password>${env.COMMERCIAL_REPO_PASSWORD}</password>
|
||||
</server>
|
||||
<server>
|
||||
<id>spring-commercial-snapshot</id>
|
||||
<username>${env.COMMERCIAL_REPO_USERNAME}</username>
|
||||
<password>${env.COMMERCIAL_REPO_PASSWORD}</password>
|
||||
</server>
|
||||
</servers>
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>it-repo</id>
|
||||
|
|
Loading…
Reference in New Issue