This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push: new c79a7a027 [MNG-7740] Remove old temporary consumer*pom files from buildDir (#1117) c79a7a027 is described below commit c79a7a02721f0f9fd7e202e99f60b593461ba8cc Author: Guillaume Nodet <gno...@gmail.com> AuthorDate: Mon Jun 5 10:47:13 2023 +0200 [MNG-7740] Remove old temporary consumer*pom files from buildDir (#1117) Co-authored-by: Giovanni van der Schelde <giovanni.vandersche...@infosupport.com> --- .../ConsumerPomArtifactTransformer.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/maven-core/src/main/java/org/apache/maven/internal/transformation/ConsumerPomArtifactTransformer.java b/maven-core/src/main/java/org/apache/maven/internal/transformation/ConsumerPomArtifactTransformer.java index 78bee09c1..b1ffc10e8 100644 --- a/maven-core/src/main/java/org/apache/maven/internal/transformation/ConsumerPomArtifactTransformer.java +++ b/maven-core/src/main/java/org/apache/maven/internal/transformation/ConsumerPomArtifactTransformer.java @@ -18,6 +18,7 @@ */ package org.apache.maven.internal.transformation; +import javax.annotation.PreDestroy; import javax.inject.Named; import javax.inject.Singleton; @@ -29,6 +30,8 @@ import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.Collection; +import java.util.Set; +import java.util.concurrent.CopyOnWriteArraySet; import java.util.function.BiConsumer; import org.apache.maven.feature.Features; @@ -61,6 +64,8 @@ public final class ConsumerPomArtifactTransformer { private static final String CONSUMER_POM_CLASSIFIER = "consumer"; + private final Set<Path> toDelete = new CopyOnWriteArraySet<>(); + public void injectTransformedArtifacts(MavenProject project, RepositorySystemSession session) throws IOException { if (project.getFile() == null) { // If there is no build POM there is no reason to inject artifacts for the consumer POM. @@ -77,6 +82,7 @@ public final class ConsumerPomArtifactTransformer { Files.createDirectories(buildDir); generatedFile = Files.createTempFile(buildDir, CONSUMER_POM_CLASSIFIER, "pom"); } + deferDeleteFile(generatedFile); project.addAttachedArtifact(new ConsumerPomArtifact(project, generatedFile, session)); } else if (project.getModel().isRoot()) { throw new IllegalStateException( @@ -84,6 +90,21 @@ public final class ConsumerPomArtifactTransformer { } } + private void deferDeleteFile(Path generatedFile) { + toDelete.add(generatedFile.toAbsolutePath()); + } + + @PreDestroy + private void doDeleteFiles() { + for (Path file : toDelete) { + try { + Files.delete(file); + } catch (IOException e) { + // ignore, we did our best... + } + } + } + public InstallRequest remapInstallArtifacts(RepositorySystemSession session, InstallRequest request) { if (isActive(session) && consumerPomPresent(request.getArtifacts())) { request.setArtifacts(replacePom(request.getArtifacts()));