Merge branch '3.3.x'

Closes gh-42689
This commit is contained in:
Stéphane Nicoll 2024-10-15 10:42:41 +02:00
commit a66d3d2f00
6 changed files with 32 additions and 22 deletions

View File

@ -50,7 +50,7 @@ public class ConventionsPlugin implements Plugin<Project> {
new KotlinConventions().apply(project); new KotlinConventions().apply(project);
new WarConventions().apply(project); new WarConventions().apply(project);
new EclipseConventions().apply(project); new EclipseConventions().apply(project);
RepoistoryTransformersExtension.apply(project); RepositoryTransformersExtension.apply(project);
} }
} }

View File

@ -23,18 +23,20 @@ import org.gradle.api.Transformer;
import org.gradle.api.artifacts.repositories.MavenArtifactRepository; import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
/** /**
* Extension to add {@code springRepoistoryTransformers} utility methods. * Extension to add {@code springRepositoryTransformers} utility methods.
* *
* @author Phillip Webb * @author Phillip Webb
*/ */
public class RepoistoryTransformersExtension { public class RepositoryTransformersExtension {
private static final String MARKER = "{spring.mavenRepositories}"; private static final String MARKER = "{spring.mavenRepositories}";
private static final String MARKER_PLUGIN = "{spring.mavenPluginRepositories}";
private final Project project; private final Project project;
@Inject @Inject
public RepoistoryTransformersExtension(Project project) { public RepositoryTransformersExtension(Project project) {
this.project = project; this.project = project;
} }
@ -65,24 +67,32 @@ public class RepoistoryTransformersExtension {
private String transformMavenSettings(String line) { private String transformMavenSettings(String line) {
if (line.contains(MARKER)) { if (line.contains(MARKER)) {
return transformMarker(line, false);
}
if (line.contains(MARKER_PLUGIN)) {
return transformMarker(line, true);
}
return line;
}
private String transformMarker(String line, boolean pluginRepository) {
StringBuilder result = new StringBuilder(); StringBuilder result = new StringBuilder();
String indent = getIndent(line); String indent = getIndent(line);
this.project.getRepositories().withType(MavenArtifactRepository.class, (repository) -> { this.project.getRepositories().withType(MavenArtifactRepository.class, (repository) -> {
String name = repository.getName(); String name = repository.getName();
if (name.startsWith("spring-")) { if (name.startsWith("spring-")) {
result.append(!result.isEmpty() ? "\n" : ""); result.append(!result.isEmpty() ? "\n" : "");
result.append(mavenRepositoryXml(indent, repository)); result.append(mavenRepositoryXml(indent, repository, pluginRepository));
} }
}); });
return result.toString(); return result.toString();
} }
return line;
}
private String mavenRepositoryXml(String indent, MavenArtifactRepository repository) { private String mavenRepositoryXml(String indent, MavenArtifactRepository repository, boolean pluginRepository) {
String rootTag = pluginRepository ? "pluginRepository" : "repository";
boolean snapshots = repository.getName().endsWith("-snapshot"); boolean snapshots = repository.getName().endsWith("-snapshot");
StringBuilder xml = new StringBuilder(); 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<id>%s</id>%n".formatted(indent, repository.getName()));
xml.append("%s\t<url>%s</url>%n".formatted(indent, repository.getUrl())); xml.append("%s\t<url>%s</url>%n".formatted(indent, repository.getUrl()));
xml.append("%s\t<releases>%n".formatted(indent)); xml.append("%s\t<releases>%n".formatted(indent));
@ -91,7 +101,7 @@ public class RepoistoryTransformersExtension {
xml.append("%s\t<snapshots>%n".formatted(indent)); xml.append("%s\t<snapshots>%n".formatted(indent));
xml.append("%s\t\t<enabled>%s</enabled>%n".formatted(indent, snapshots)); xml.append("%s\t\t<enabled>%s</enabled>%n".formatted(indent, snapshots));
xml.append("%s\t</snapshots>%n".formatted(indent)); xml.append("%s\t</snapshots>%n".formatted(indent));
xml.append("%s</repository>".formatted(indent)); xml.append("%s</%s>".formatted(indent, rootTag));
return xml.toString(); return xml.toString();
} }
@ -100,7 +110,7 @@ public class RepoistoryTransformersExtension {
} }
static void apply(Project project) { static void apply(Project project) {
project.getExtensions().create("springRepoistoryTransformers", RepoistoryTransformersExtension.class, project); project.getExtensions().create("springRepositoryTransformers", RepositoryTransformersExtension.class, project);
} }
} }

View File

@ -28,7 +28,7 @@ dependencies {
task syncIntegrationTestSources(type: Sync) { task syncIntegrationTestSources(type: Sync) {
destinationDir file("${buildDir}/it") destinationDir file("${buildDir}/it")
from file("src/it") from file("src/it")
filter(springRepoistoryTransformers.ant()) filter(springRepositoryTransformers.ant())
} }
processResources { processResources {

View File

@ -94,7 +94,7 @@ ext {
task copySettingsXml(type: Copy) { task copySettingsXml(type: Copy) {
from file("src/intTest/projects/settings.xml") from file("src/intTest/projects/settings.xml")
into "${buildDir}/generated-resources/settings" into "${buildDir}/generated-resources/settings"
filter(springRepoistoryTransformers.mavenSettings()) filter(springRepositoryTransformers.mavenSettings())
} }
sourceSets { sourceSets {

View File

@ -31,7 +31,7 @@
<enabled>true</enabled> <enabled>true</enabled>
</snapshots> </snapshots>
</pluginRepository> </pluginRepository>
<!-- {spring.mavenRepositories} --> <!-- {spring.mavenPluginRepositories} -->
</pluginRepositories> </pluginRepositories>
</profile> </profile>
</profiles> </profiles>

View File

@ -50,7 +50,7 @@ task syncAntSources(type: Sync) {
destinationDir file("${buildDir}/ant") destinationDir file("${buildDir}/ant")
from project.layout.projectDirectory from project.layout.projectDirectory
include "*.xml" include "*.xml"
filter(springRepoistoryTransformers.ant()) filter(springRepositoryTransformers.ant())
} }
task antRun(type: JavaExec) { task antRun(type: JavaExec) {