Skip to content

Commit d657c03

Browse files
Resolve metadata for org.apache.maven.plugins
1 parent 4225725 commit d657c03

File tree

2 files changed

+67
-4
lines changed
  • core-it-suite/src/test/resources/bootstrap
  • core-it-support/maven-it-plugin-bootstrap/src/main/java/org/apache/maven/its/bootstrap

2 files changed

+67
-4
lines changed

core-it-suite/src/test/resources/bootstrap/pom.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ under the License.
5151
<version>2.1-SNAPSHOT</version>
5252
<executions>
5353
<execution>
54+
<id>dependencies</id>
5455
<goals>
5556
<goal>download</goal>
5657
</goals>
@@ -59,6 +60,19 @@ under the License.
5960
<file>${file}</file>
6061
</configuration>
6162
</execution>
63+
<execution>
64+
<id>metadata</id>
65+
<goals>
66+
<goal>download</goal>
67+
</goals>
68+
<phase>process-resources</phase>
69+
<inherited>false</inherited>
70+
<configuration>
71+
<groupsToResolve>
72+
<group>org.apache.maven.plugins</group>
73+
</groupsToResolve>
74+
</configuration>
75+
</execution>
6276
</executions>
6377
</plugin>
6478
</plugins>

core-it-support/maven-it-plugin-bootstrap/src/main/java/org/apache/maven/its/bootstrap/DownloadMojo.java

Lines changed: 53 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.io.File;
2323
import java.io.FileReader;
2424
import java.io.IOException;
25+
import java.util.ArrayList;
2526
import java.util.HashSet;
2627
import java.util.List;
2728
import java.util.Set;
@@ -37,11 +38,17 @@
3738
import org.apache.maven.plugins.annotations.Parameter;
3839
import org.apache.maven.project.MavenProject;
3940
import org.apache.maven.project.ProjectBuildingRequest;
41+
import org.eclipse.aether.DefaultRepositorySystemSession;
4042
import org.eclipse.aether.RepositorySystem;
4143
import org.eclipse.aether.RepositorySystemSession;
4244
import org.eclipse.aether.collection.CollectRequest;
45+
import org.eclipse.aether.metadata.DefaultMetadata;
46+
import org.eclipse.aether.metadata.Metadata;
4347
import org.eclipse.aether.repository.RemoteRepository;
48+
import org.eclipse.aether.repository.RepositoryPolicy;
4449
import org.eclipse.aether.resolution.DependencyRequest;
50+
import org.eclipse.aether.resolution.MetadataRequest;
51+
import org.eclipse.aether.resolution.MetadataResult;
4552

4653
/**
4754
* 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 {
6875
@Parameter
6976
private File file;
7077

78+
/**
79+
* A list of groupIds to resolve metadata.
80+
*/
81+
@Parameter
82+
private List<String> groupsToResolve;
83+
7184
@Component
7285
private RepositorySystem repositorySystem;
7386

@@ -76,6 +89,16 @@ public class DownloadMojo extends AbstractMojo {
7689

7790
@Override
7891
public void execute() throws MojoFailureException {
92+
93+
ProjectBuildingRequest projectBuildingRequest = session.getProjectBuildingRequest();
94+
RepositorySystemSession repositorySystemSession = projectBuildingRequest.getRepositorySession();
95+
List<RemoteRepository> repos = RepositoryUtils.toRepos(projectBuildingRequest.getRemoteRepositories());
96+
97+
if (groupsToResolve != null && !groupsToResolve.isEmpty()) {
98+
resolveMetaData(groupsToResolve, repositorySystemSession, repos);
99+
return;
100+
}
101+
79102
// this or that: either resolver file listed artifacts or collect lifecycle packaging plugins
80103
if (file != null && file.exists()) {
81104
System.out.println("Collecting artifacts from file: " + file);
@@ -101,10 +124,6 @@ public void execute() throws MojoFailureException {
101124
}
102125
}
103126

104-
ProjectBuildingRequest projectBuildingRequest = session.getProjectBuildingRequest();
105-
RepositorySystemSession repositorySystemSession = projectBuildingRequest.getRepositorySession();
106-
List<RemoteRepository> repos = RepositoryUtils.toRepos(projectBuildingRequest.getRemoteRepositories());
107-
108127
for (Dependency dependency : dependencies) {
109128
try {
110129
org.eclipse.aether.graph.Dependency root =
@@ -138,4 +157,34 @@ static Dependency toDependency(String artifact) throws MojoFailureException {
138157
}
139158
return coordinate;
140159
}
160+
161+
/**
162+
* Resolve metadata for maven plugins needs for MavenITmng7353CliGoalInvocationTest.
163+
*/
164+
private void resolveMetaData(
165+
List<String> groupsToResolve,
166+
RepositorySystemSession repositorySystemSession,
167+
List<RemoteRepository> repos) {
168+
169+
getLog().info("Resolving metadata for groups: " + groupsToResolve);
170+
171+
List<MetadataRequest> requests = new ArrayList<>();
172+
173+
for (String groupId : groupsToResolve) {
174+
Metadata metadata =
175+
new DefaultMetadata(groupId, "maven-metadata.xml", DefaultMetadata.Nature.RELEASE_OR_SNAPSHOT);
176+
for (RemoteRepository repository : repos) {
177+
requests.add(new MetadataRequest(metadata, repository, "plugin"));
178+
}
179+
}
180+
181+
DefaultRepositorySystemSession session = new DefaultRepositorySystemSession(repositorySystemSession);
182+
session.setUpdatePolicy(RepositoryPolicy.UPDATE_POLICY_ALWAYS);
183+
184+
List<MetadataResult> metadataResults = repositorySystem.resolveMetadata(session, requests);
185+
for (MetadataResult metadataResult : metadataResults) {
186+
getLog().info("metadata result: " + metadataResult.toString() + " from repository: "
187+
+ metadataResult.getRequest().getRepository());
188+
}
189+
}
141190
}

0 commit comments

Comments
 (0)