1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.resolver.examples;
20
21 import java.util.Collections;
22
23 import org.apache.maven.resolver.examples.util.Booter;
24 import org.eclipse.aether.RepositorySystem;
25 import org.eclipse.aether.RepositorySystemSession.CloseableSession;
26 import org.eclipse.aether.RepositorySystemSession.SessionBuilder;
27 import org.eclipse.aether.artifact.Artifact;
28 import org.eclipse.aether.artifact.DefaultArtifact;
29 import org.eclipse.aether.collection.CollectRequest;
30 import org.eclipse.aether.collection.CollectResult;
31 import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
32 import org.eclipse.aether.resolution.ArtifactDescriptorResult;
33 import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
34 import org.eclipse.aether.util.graph.transformer.ConflictResolver;
35 import org.eclipse.aether.util.graph.visitor.DependencyGraphDumper;
36
37 import static org.eclipse.aether.util.graph.visitor.DependencyGraphDumper.artifactProperties;
38 import static org.eclipse.aether.util.graph.visitor.DependencyGraphDumper.defaultsWith;
39
40
41
42
43 public class GetDependencyHierarchy {
44
45
46
47
48
49
50 public static void main(String[] args) throws Exception {
51 System.out.println("------------------------------------------------------------");
52 System.out.println(GetDependencyHierarchy.class.getSimpleName());
53
54 try (RepositorySystem system = Booter.newRepositorySystem(Booter.selectFactory(args))) {
55 SessionBuilder sessionBuilder = Booter.newRepositorySystemSession(system);
56 sessionBuilder.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, true);
57 sessionBuilder.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, true);
58 try (CloseableSession session = sessionBuilder.build()) {
59 Artifact artifact = new DefaultArtifact("org.apache.maven:maven-resolver-provider:3.6.1");
60
61 ArtifactDescriptorRequest descriptorRequest = new ArtifactDescriptorRequest();
62 descriptorRequest.setArtifact(artifact);
63 descriptorRequest.setRepositories(Booter.newRepositories(system, session));
64 ArtifactDescriptorResult descriptorResult = system.readArtifactDescriptor(session, descriptorRequest);
65
66 CollectRequest collectRequest = new CollectRequest();
67 collectRequest.setRootArtifact(descriptorResult.getArtifact());
68 collectRequest.setDependencies(descriptorResult.getDependencies());
69 collectRequest.setManagedDependencies(descriptorResult.getManagedDependencies());
70 collectRequest.setRepositories(descriptorRequest.getRepositories());
71
72 CollectResult collectResult = system.collectDependencies(session, collectRequest);
73
74 collectResult
75 .getRoot()
76 .accept(new DependencyGraphDumper(
77 System.out::println,
78 defaultsWith(
79 Collections.singleton(artifactProperties(Collections.singleton("color"))))));
80 }
81 }
82 }
83 }