in maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java [252:316]
public DependencyResult resolveDependencies(RepositorySystemSession session, DependencyRequest request)
throws DependencyResolutionException {
validateSession(session);
requireNonNull(request, "request cannot be null");
repositorySystemValidator.validateDependencyRequest(session, request);
RequestTrace trace = RequestTrace.newChild(request.getTrace(), request);
DependencyResult result = new DependencyResult(request);
DependencyCollectionException dce = null;
ArtifactResolutionException are = null;
if (request.getRoot() != null) {
result.setRoot(request.getRoot());
} else if (request.getCollectRequest() != null) {
CollectResult collectResult;
try {
request.getCollectRequest().setTrace(trace);
collectResult = dependencyCollector.collectDependencies(session, request.getCollectRequest());
} catch (DependencyCollectionException e) {
dce = e;
collectResult = e.getResult();
}
result.setRoot(collectResult.getRoot());
result.setCycles(collectResult.getCycles());
result.setCollectExceptions(collectResult.getExceptions());
} else {
throw new NullPointerException("dependency node and collect request cannot be null");
}
final List<DependencyNode> dependencyNodes =
doFlattenDependencyNodes(session, result.getRoot(), request.getFilter());
final List<ArtifactRequest> requests = dependencyNodes.stream()
.map(n -> {
if (n.getDependency() != null) {
ArtifactRequest artifactRequest = new ArtifactRequest(n);
artifactRequest.setTrace(trace);
return artifactRequest;
} else {
return null;
}
})
.filter(Objects::nonNull)
.collect(Collectors.toList());
List<ArtifactResult> results;
try {
results = artifactResolver.resolveArtifacts(session, requests);
} catch (ArtifactResolutionException e) {
are = e;
results = e.getResults();
}
result.setDependencyNodeResults(dependencyNodes);
result.setArtifactResults(results);
updateNodesWithResolvedArtifacts(results);
if (dce != null) {
throw new DependencyResolutionException(result, dce);
} else if (are != null) {
throw new DependencyResolutionException(result, are);
}
return result;
}