1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.resolver.internal.ant.tasks;
20
21 import org.apache.tools.ant.Project;
22 import org.apache.tools.ant.Task;
23 import org.eclipse.aether.artifact.Artifact;
24 import org.eclipse.aether.graph.Dependency;
25 import org.eclipse.aether.graph.DependencyNode;
26 import org.eclipse.aether.graph.DependencyVisitor;
27 import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
28
29
30
31 class DependencyGraphLogger implements DependencyVisitor {
32
33 private Task task;
34
35 private String indent = "";
36
37 DependencyGraphLogger(Task task) {
38 this.task = task;
39 }
40
41 public boolean visitEnter(DependencyNode node) {
42 StringBuilder buffer = new StringBuilder(128);
43 buffer.append(indent);
44 Dependency dep = node.getDependency();
45 if (dep != null) {
46 Artifact art = dep.getArtifact();
47
48 buffer.append(art);
49 buffer.append(':').append(dep.getScope());
50
51 String premanagedScope = DependencyManagerUtils.getPremanagedScope(node);
52 if (premanagedScope != null && !premanagedScope.equals(dep.getScope())) {
53 buffer.append(" (scope managed from ").append(premanagedScope).append(")");
54 }
55
56 String premanagedVersion = DependencyManagerUtils.getPremanagedVersion(node);
57 if (premanagedVersion != null && !premanagedVersion.equals(art.getVersion())) {
58 buffer.append(" (version managed from ")
59 .append(premanagedVersion)
60 .append(")");
61 }
62 } else {
63 buffer.append("Resolved Dependency Graph:");
64 }
65
66 task.log(buffer.toString(), Project.MSG_VERBOSE);
67 indent += " ";
68 return true;
69 }
70
71 public boolean visitLeave(DependencyNode node) {
72 indent = indent.substring(0, indent.length() - 3);
73 return true;
74 }
75 }