in maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDeployer.java [158:277]
private DeployResult deploy(SyncContext syncContext, RepositorySystemSession session, DeployRequest request)
throws DeploymentException {
DeployResult result = new DeployResult(request);
RequestTrace trace = RequestTrace.newChild(request.getTrace(), request);
RemoteRepository repository = request.getRepository();
RepositoryConnector connector;
try {
connector = repositoryConnectorProvider.newRepositoryConnector(session, repository);
} catch (NoRepositoryConnectorException e) {
throw new DeploymentException("Failed to deploy artifacts/metadata: " + e.getMessage(), e);
}
List<Artifact> artifacts = new ArrayList<>(request.getArtifacts());
List<? extends ArtifactGenerator> artifactGenerators =
Utils.getArtifactGenerators(session, artifactFactories, request);
try {
List<Artifact> generatedArtifacts = new ArrayList<>();
for (ArtifactGenerator artifactGenerator : artifactGenerators) {
Collection<? extends Artifact> generated = artifactGenerator.generate(generatedArtifacts);
for (Artifact generatedArtifact : generated) {
Map<String, String> properties = new HashMap<>(generatedArtifact.getProperties());
properties.put(
ArtifactGeneratorFactory.ARTIFACT_GENERATOR_ID,
requireNonNull(artifactGenerator.generatorId(), "generatorId"));
Artifact ga = generatedArtifact.setProperties(properties);
generatedArtifacts.add(ga);
}
}
artifacts.addAll(generatedArtifacts);
List<? extends MetadataGenerator> metadataGenerators =
Utils.getMetadataGenerators(session, metadataFactories, request);
List<ArtifactUpload> artifactUploads = new ArrayList<>();
List<MetadataUpload> metadataUploads = new ArrayList<>();
IdentityHashMap<Metadata, Object> processedMetadata = new IdentityHashMap<>();
EventCatapult catapult = new EventCatapult(session, trace, repository, repositoryEventDispatcher);
List<Metadata> metadatas = Utils.prepareMetadata(metadataGenerators, artifacts);
syncContext.acquire(artifacts, Utils.combine(request.getMetadata(), metadatas));
for (Metadata metadata : metadatas) {
upload(metadataUploads, session, metadata, repository, connector, catapult);
processedMetadata.put(metadata, null);
}
for (ListIterator<Artifact> iterator = artifacts.listIterator(); iterator.hasNext(); ) {
Artifact artifact = iterator.next();
for (MetadataGenerator generator : metadataGenerators) {
artifact = generator.transformArtifact(artifact);
}
iterator.set(artifact);
ArtifactUpload upload = new ArtifactUpload(artifact, artifact.getPath());
upload.setTrace(trace);
upload.setListener(new ArtifactUploadListener(catapult, upload));
artifactUploads.add(upload);
}
connector.put(artifactUploads, null);
for (ArtifactUpload upload : artifactUploads) {
if (upload.getException() != null) {
throw new DeploymentException(
"Failed to deploy artifacts: "
+ upload.getException().getMessage(),
upload.getException());
}
if (upload.getArtifact().getProperty(ArtifactGeneratorFactory.ARTIFACT_GENERATOR_ID, null) == null) {
result.addArtifact(upload.getArtifact());
}
}
metadatas = Utils.finishMetadata(metadataGenerators, artifacts);
syncContext.acquire(null, metadatas);
for (Metadata metadata : metadatas) {
upload(metadataUploads, session, metadata, repository, connector, catapult);
processedMetadata.put(metadata, null);
}
for (Metadata metadata : request.getMetadata()) {
if (!processedMetadata.containsKey(metadata)) {
upload(metadataUploads, session, metadata, repository, connector, catapult);
processedMetadata.put(metadata, null);
}
}
connector.put(null, metadataUploads);
for (MetadataUpload upload : metadataUploads) {
if (upload.getException() != null) {
throw new DeploymentException(
"Failed to deploy metadata: "
+ upload.getException().getMessage(),
upload.getException());
}
result.addMetadata(upload.getMetadata());
}
} finally {
connector.close();
for (ArtifactGenerator artifactGenerator : artifactGenerators) {
try {
artifactGenerator.close();
} catch (Exception e) {
logger.warn("ArtifactGenerator close failure: {}", artifactGenerator.generatorId(), e);
}
}
}
return result;
}