in src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyCollectorBuilder.java [178:236]
private DependencyNode buildDependencyNode(
DependencyNode parent,
org.eclipse.aether.graph.DependencyNode node,
Artifact artifact,
ArtifactFilter filter) {
String premanagedVersion = DependencyManagerUtils.getPremanagedVersion(node);
String premanagedScope = DependencyManagerUtils.getPremanagedScope(node);
Boolean optional = null;
if (node.getDependency() != null) {
optional = node.getDependency().isOptional();
}
List<org.apache.maven.model.Exclusion> exclusions = null;
if (node.getDependency() != null) {
exclusions = new ArrayList<>(node.getDependency().getExclusions().size());
for (Exclusion exclusion : node.getDependency().getExclusions()) {
org.apache.maven.model.Exclusion modelExclusion = new org.apache.maven.model.Exclusion();
modelExclusion.setGroupId(exclusion.getGroupId());
modelExclusion.setArtifactId(exclusion.getArtifactId());
exclusions.add(modelExclusion);
}
}
org.eclipse.aether.graph.DependencyNode winner =
(org.eclipse.aether.graph.DependencyNode) node.getData().get(ConflictResolver.NODE_DATA_WINNER);
String winnerVersion = null;
String ignoredScope = null;
if (winner != null) {
winnerVersion = winner.getArtifact().getBaseVersion();
} else {
ignoredScope = (String) node.getData().get(VerboseJavaScopeSelector.REDUCED_SCOPE);
}
ConflictData data = new ConflictData(winnerVersion, ignoredScope);
VerboseDependencyNode current = new VerboseDependencyNode(
parent,
artifact,
premanagedVersion,
premanagedScope,
getVersionSelectedFromRange(node.getVersionConstraint()),
optional,
exclusions,
data);
List<DependencyNode> nodes = new ArrayList<>(node.getChildren().size());
for (org.eclipse.aether.graph.DependencyNode child : node.getChildren()) {
Artifact childArtifact = getDependencyArtifact(child.getDependency());
if ((filter == null) || filter.include(childArtifact)) {
nodes.add(buildDependencyNode(current, child, childArtifact, filter));
}
}
current.setChildren(Collections.unmodifiableList(nodes));
return current;
}