Skip to content

Commit

Permalink
Transform Maven settings with proper plugin repository tag
Browse files Browse the repository at this point in the history
This commit adapts d44e7c9 to transforms plugin repositories using the
correct root tag. Previously, they were transformed with the regular
<repository> tag, which is invalid.

Closes gh-42687
  • Loading branch information
snicoll committed Oct 15, 2024
1 parent 4cf0f86 commit b0dd42e
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public void apply(Project project) {
new KotlinConventions().apply(project);
new WarConventions().apply(project);
new EclipseConventions().apply(project);
RepoistoryTransformersExtension.apply(project);
RepositoryTransformersExtension.apply(project);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,20 @@
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;

/**
* Extension to add {@code springRepoistoryTransformers} utility methods.
* Extension to add {@code springRepositoryTransformers} utility methods.
*
* @author Phillip Webb
*/
public class RepoistoryTransformersExtension {
public class RepositoryTransformersExtension {

private static final String MARKER = "{spring.mavenRepositories}";

private static final String MARKER_PLUGIN = "{spring.mavenPluginRepositories}";

private final Project project;

@Inject
public RepoistoryTransformersExtension(Project project) {
public RepositoryTransformersExtension(Project project) {
this.project = project;
}

Expand Down Expand Up @@ -65,24 +67,32 @@ public Transformer<String, String> mavenSettings() {

private String transformMavenSettings(String line) {
if (line.contains(MARKER)) {
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));
}
});
return result.toString();
return transformMarker(line, false);
}
if (line.contains(MARKER_PLUGIN)) {
return transformMarker(line, true);
}
return line;
}

private String mavenRepositoryXml(String indent, MavenArtifactRepository repository) {
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 mavenRepositoryXml(String indent, MavenArtifactRepository repository, boolean pluginRepository) {
String rootTag = pluginRepository ? "pluginRepository" : "repository";
boolean snapshots = repository.getName().endsWith("-snapshot");
StringBuilder xml = new StringBuilder();
xml.append("%s<repository>%n".formatted(indent));
xml.append("%s<%s>%n".formatted(indent, rootTag));
xml.append("%s\t<id>%s</id>%n".formatted(indent, repository.getName()));
xml.append("%s\t<url>%s</url>%n".formatted(indent, repository.getUrl()));
xml.append("%s\t<releases>%n".formatted(indent));
Expand All @@ -91,7 +101,7 @@ private String mavenRepositoryXml(String indent, MavenArtifactRepository reposit
xml.append("%s\t<snapshots>%n".formatted(indent));
xml.append("%s\t\t<enabled>%s</enabled>%n".formatted(indent, snapshots));
xml.append("%s\t</snapshots>%n".formatted(indent));
xml.append("%s</repository>".formatted(indent));
xml.append("%s</%s>".formatted(indent, rootTag));
return xml.toString();
}

Expand All @@ -100,7 +110,7 @@ private String getIndent(String line) {
}

static void apply(Project project) {
project.getExtensions().create("springRepoistoryTransformers", RepoistoryTransformersExtension.class, project);
project.getExtensions().create("springRepositoryTransformers", RepositoryTransformersExtension.class, project);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ dependencies {
task syncIntegrationTestSources(type: Sync) {
destinationDir file("${buildDir}/it")
from file("src/it")
filter(springRepoistoryTransformers.ant())
filter(springRepositoryTransformers.ant())
}

processResources {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ syncDocumentationSourceForAsciidoctor {
task copySettingsXml(type: Copy) {
from file("src/intTest/projects/settings.xml")
into "${buildDir}/generated-resources/settings"
filter(springRepoistoryTransformers.mavenSettings())
filter(springRepositoryTransformers.mavenSettings())
}

sourceSets {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<!-- {spring.mavenRepositories} -->
<!-- {spring.mavenPluginRepositories} -->
</pluginRepositories>
</profile>
</profiles>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ task syncAntSources(type: Sync) {
destinationDir file("${buildDir}/ant")
from project.layout.projectDirectory
include "*.xml"
filter(springRepoistoryTransformers.ant())
filter(springRepositoryTransformers.ant())
}

task antRun(type: JavaExec) {
Expand Down

0 comments on commit b0dd42e

Please sign in to comment.