From 2f5c899dff8b720bfd2bf63b700e33989e9af19e Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Wed, 1 Oct 2025 20:36:36 +0200 Subject: [PATCH] Resolve metadata for org.apache.maven.plugins --- .../src/test/resources/bootstrap/pom.xml | 14 +++++ .../maven/its/bootstrap/DownloadMojo.java | 57 +++++++++++++++++-- 2 files changed, 67 insertions(+), 4 deletions(-) diff --git a/core-it-suite/src/test/resources/bootstrap/pom.xml b/core-it-suite/src/test/resources/bootstrap/pom.xml index a6b746515..85eaad1b1 100644 --- a/core-it-suite/src/test/resources/bootstrap/pom.xml +++ b/core-it-suite/src/test/resources/bootstrap/pom.xml @@ -51,6 +51,7 @@ under the License. 2.1-SNAPSHOT + dependencies download @@ -59,6 +60,19 @@ under the License. ${file} + + metadata + + download + + process-resources + false + + + org.apache.maven.plugins + + + diff --git a/core-it-support/maven-it-plugin-bootstrap/src/main/java/org/apache/maven/its/bootstrap/DownloadMojo.java b/core-it-support/maven-it-plugin-bootstrap/src/main/java/org/apache/maven/its/bootstrap/DownloadMojo.java index 241a68057..18af78619 100644 --- a/core-it-support/maven-it-plugin-bootstrap/src/main/java/org/apache/maven/its/bootstrap/DownloadMojo.java +++ b/core-it-support/maven-it-plugin-bootstrap/src/main/java/org/apache/maven/its/bootstrap/DownloadMojo.java @@ -22,6 +22,7 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -37,11 +38,17 @@ import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; import org.apache.maven.project.ProjectBuildingRequest; +import org.eclipse.aether.DefaultRepositorySystemSession; import org.eclipse.aether.RepositorySystem; import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.collection.CollectRequest; +import org.eclipse.aether.metadata.DefaultMetadata; +import org.eclipse.aether.metadata.Metadata; import org.eclipse.aether.repository.RemoteRepository; +import org.eclipse.aether.repository.RepositoryPolicy; import org.eclipse.aether.resolution.DependencyRequest; +import org.eclipse.aether.resolution.MetadataRequest; +import org.eclipse.aether.resolution.MetadataResult; /** * Boostrap plugin to download all required dependencies (provided in file) or to collect lifecycle bound build plugin @@ -68,6 +75,12 @@ public class DownloadMojo extends AbstractMojo { @Parameter private File file; + /** + * A list of groupIds to resolve metadata. + */ + @Parameter + private List groupsToResolve; + @Component private RepositorySystem repositorySystem; @@ -76,6 +89,16 @@ public class DownloadMojo extends AbstractMojo { @Override public void execute() throws MojoFailureException { + + ProjectBuildingRequest projectBuildingRequest = session.getProjectBuildingRequest(); + RepositorySystemSession repositorySystemSession = projectBuildingRequest.getRepositorySession(); + List repos = RepositoryUtils.toRepos(projectBuildingRequest.getRemoteRepositories()); + + if (groupsToResolve != null && !groupsToResolve.isEmpty()) { + resolveMetaData(groupsToResolve, repositorySystemSession, repos); + return; + } + // this or that: either resolver file listed artifacts or collect lifecycle packaging plugins if (file != null && file.exists()) { System.out.println("Collecting artifacts from file: " + file); @@ -101,10 +124,6 @@ public void execute() throws MojoFailureException { } } - ProjectBuildingRequest projectBuildingRequest = session.getProjectBuildingRequest(); - RepositorySystemSession repositorySystemSession = projectBuildingRequest.getRepositorySession(); - List repos = RepositoryUtils.toRepos(projectBuildingRequest.getRemoteRepositories()); - for (Dependency dependency : dependencies) { try { org.eclipse.aether.graph.Dependency root = @@ -138,4 +157,34 @@ static Dependency toDependency(String artifact) throws MojoFailureException { } return coordinate; } + + /** + * Resolve metadata for maven plugins needs for MavenITmng7353CliGoalInvocationTest. + */ + private void resolveMetaData( + List groupsToResolve, + RepositorySystemSession repositorySystemSession, + List repos) { + + getLog().info("Resolving metadata for groups: " + groupsToResolve); + + List requests = new ArrayList<>(); + + for (String groupId : groupsToResolve) { + Metadata metadata = + new DefaultMetadata(groupId, "maven-metadata.xml", DefaultMetadata.Nature.RELEASE_OR_SNAPSHOT); + for (RemoteRepository repository : repos) { + requests.add(new MetadataRequest(metadata, repository, "plugin")); + } + } + + DefaultRepositorySystemSession session = new DefaultRepositorySystemSession(repositorySystemSession); + session.setUpdatePolicy(RepositoryPolicy.UPDATE_POLICY_ALWAYS); + + List metadataResults = repositorySystem.resolveMetadata(session, requests); + for (MetadataResult metadataResult : metadataResults) { + getLog().info("metadata result: " + metadataResult.toString() + " from repository: " + + metadataResult.getRequest().getRepository()); + } + } }