in maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java [111:192]
private InstallResult install(SyncContext syncContext, RepositorySystemSession session, InstallRequest request)
throws InstallationException {
InstallResult result = new InstallResult(request);
RequestTrace trace = RequestTrace.newChild(request.getTrace(), request);
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);
IdentityHashMap<Metadata, Object> processedMetadata = new IdentityHashMap<>();
List<Metadata> metadatas = Utils.prepareMetadata(metadataGenerators, artifacts);
syncContext.acquire(artifacts, Utils.combine(request.getMetadata(), metadatas));
for (Metadata metadata : metadatas) {
install(session, trace, metadata);
processedMetadata.put(metadata, null);
result.addMetadata(metadata);
}
for (ListIterator<Artifact> iterator = artifacts.listIterator(); iterator.hasNext(); ) {
Artifact artifact = iterator.next();
for (MetadataGenerator generator : metadataGenerators) {
artifact = generator.transformArtifact(artifact);
}
iterator.set(artifact);
install(session, trace, artifact);
if (artifact.getProperty(ArtifactGeneratorFactory.ARTIFACT_GENERATOR_ID, null) == null) {
result.addArtifact(artifact);
}
}
metadatas = Utils.finishMetadata(metadataGenerators, artifacts);
syncContext.acquire(null, metadatas);
for (Metadata metadata : metadatas) {
install(session, trace, metadata);
processedMetadata.put(metadata, null);
result.addMetadata(metadata);
}
for (Metadata metadata : request.getMetadata()) {
if (!processedMetadata.containsKey(metadata)) {
install(session, trace, metadata);
result.addMetadata(metadata);
}
}
return result;
} finally {
for (ArtifactGenerator artifactGenerator : artifactGenerators) {
try {
artifactGenerator.close();
} catch (Exception e) {
logger.warn("ArtifactGenerator close failure: {}", artifactGenerator.generatorId(), e);
}
}
}
}