in maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java [501:553]
private List<ArtifactDownload> gatherDownloads(RepositorySystemSession session, ResolutionGroup group) {
LocalRepositoryManager lrm = session.getLocalRepositoryManager();
List<ArtifactDownload> downloads = new ArrayList<>();
for (ResolutionItem item : group.items) {
Artifact artifact = item.artifact;
if (item.resolved.get()) {
// resolved in previous resolution group
continue;
}
ArtifactDownload download = new ArtifactDownload();
download.setArtifact(artifact);
download.setRequestContext(item.request.getRequestContext());
download.setListener(SafeTransferListener.wrap(session));
download.setTrace(item.trace);
if (item.local.getPath() != null) {
download.setPath(item.local.getPath());
download.setExistenceCheck(true);
} else {
download.setPath(lrm.getAbsolutePathForRemoteArtifact(
artifact, group.repository, item.request.getRequestContext()));
}
boolean snapshot = artifact.isSnapshot();
RepositoryPolicy policy = remoteRepositoryManager.getPolicy(session, group.repository, !snapshot, snapshot);
int errorPolicy = Utils.getPolicy(session, artifact, group.repository);
if ((errorPolicy & ResolutionErrorPolicy.CACHE_ALL) != 0) {
UpdateCheck<Artifact, ArtifactTransferException> check = new UpdateCheck<>();
check.setItem(artifact);
check.setPath(download.getPath());
check.setFileValid(false);
check.setRepository(group.repository);
check.setArtifactPolicy(policy.getArtifactUpdatePolicy());
check.setMetadataPolicy(policy.getMetadataUpdatePolicy());
item.updateCheck = check;
updateCheckManager.checkArtifact(session, check);
if (!check.isRequired()) {
item.result.addException(group.repository, check.getException());
continue;
}
}
download.setChecksumPolicy(policy.getChecksumPolicy());
download.setRepositories(item.repository.getMirroredRepositories());
downloads.add(download);
item.download = download;
}
return downloads;
}