in maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java [292:349]
public void put(
Collection<? extends ArtifactUpload> artifactUploads,
Collection<? extends MetadataUpload> metadataUploads) {
failIfClosed();
Collection<? extends ArtifactUpload> safeArtifactUploads = safe(artifactUploads);
Collection<? extends MetadataUpload> safeMetadataUploads = safe(metadataUploads);
Executor executor =
getExecutor(false, parallelPut ? safeArtifactUploads.size() + safeMetadataUploads.size() : 1);
RunnableErrorForwarder errorForwarder = new RunnableErrorForwarder();
boolean first = true;
for (ArtifactUpload transfer : safeArtifactUploads) {
URI location = layout.getLocation(transfer.getArtifact(), true);
TransferResource resource = newTransferResource(location, transfer);
TransferEvent.Builder builder = newEventBuilder(resource, true, false);
ArtifactTransportListener listener = new ArtifactTransportListener(transfer, repository, builder);
List<RepositoryLayout.ChecksumLocation> checksumLocations =
layout.getChecksumLocations(transfer.getArtifact(), true, location);
Runnable task = new PutTaskRunner(location, transfer.getPath(), checksumLocations, listener);
if (first) {
task.run();
first = false;
} else {
executor.execute(errorForwarder.wrap(task));
}
}
errorForwarder.await(); // make sure all artifacts are PUT before we go with Metadata
for (List<? extends MetadataUpload> transferGroup : groupUploads(safeMetadataUploads)) {
for (MetadataUpload transfer : transferGroup) {
URI location = layout.getLocation(transfer.getMetadata(), true);
TransferResource resource = newTransferResource(location, transfer);
TransferEvent.Builder builder = newEventBuilder(resource, true, false);
MetadataTransportListener listener = new MetadataTransportListener(transfer, repository, builder);
List<RepositoryLayout.ChecksumLocation> checksumLocations =
layout.getChecksumLocations(transfer.getMetadata(), true, location);
Runnable task = new PutTaskRunner(location, transfer.getPath(), checksumLocations, listener);
if (first) {
task.run();
first = false;
} else {
executor.execute(errorForwarder.wrap(task));
}
}
errorForwarder.await(); // make sure each group is done before starting next group
}
}