[ https://issues.apache.org/jira/browse/MNG-7740?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17721900#comment-17721900 ]
ASF GitHub Bot commented on MNG-7740: ------------------------------------- Giovds commented on code in PR #1105: URL: https://github.com/apache/maven/pull/1105#discussion_r1191651779 ########## maven-core/src/main/java/org/apache/maven/internal/transformation/ConsumerPomArtifactTransformer.java: ########## @@ -77,13 +80,34 @@ public void injectTransformedArtifacts(MavenProject project, RepositorySystemSes Files.createDirectories(buildDir); generatedFile = Files.createTempFile(buildDir, CONSUMER_POM_CLASSIFIER, "pom"); } + + removeOldConsumerPomFiles(generatedFile); + project.addAttachedArtifact(new ConsumerPomArtifact(project, generatedFile, session)); } else if (project.getModel().isRoot()) { throw new IllegalStateException( "The use of the root attribute on the model requires the buildconsumer feature to be active"); } } + private void removeOldConsumerPomFiles(Path generatedFile) throws IOException { + List<Path> oldConsumerPomFiles; Review Comment: I had a couple of reasons for it. The first reason for me is readability (as I'll show down below). The second is that I don't think its a good practice to wrap the checked exception into a runtime exception (also introducing more code or a wrapper 'delete' method). Especially since `injectTransformedArtifacts()` already throws a checked exception which is probably accounted for somewhere at some point. As far as I know when you rewrite the stream to something like `stream.filter(path -> /*filter*/ }).forEach(Files::delete);` you either have to wrap the checked exception thrown by `Files.delete(path)` into a runtime exception: ```java private void delete( Path path ) { try { Files.delete( path ); } catch ( IOException e ) { throw new RuntimeException("", e); } } /* obfuscated*/ stream.filter(path -> /*filter*/ }) .forEach(this::delete); ``` Or handle it: ```java stream.filter(path -> /*filter*/ }) .forEach(path -> { try { Files.delete(path); } catch (IOException ex) { /*handle the exception*/ } }); ``` > Target directory is flooded with consumer*pom files > --------------------------------------------------- > > Key: MNG-7740 > URL: https://issues.apache.org/jira/browse/MNG-7740 > Project: Maven > Issue Type: Improvement > Components: build/consumer, Core > Affects Versions: 4.0.0-alpha-4 > Environment: Apache Maven 4.0.0-alpha-4 > (009cf4a7213aead8a7946a2397e2396c5927f30f) > Maven home: /Users/maarten/Tools/apache-maven-4.0.0-alpha-4 > Java version: 17.0.6, vendor: Eclipse Adoptium, runtime: > /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home > Default locale: en_NL, platform encoding: UTF-8 > OS name: "mac os x", version: "13.2.1", arch: "aarch64", family: "mac" > Reporter: Maarten Mulders > Priority: Minor > Labels: up-for-grabs > > After invoking Mavens {{validate}} or later lifecycle phase, there is a > *consumerXXXpom* file left in the build directory. Here, XXX is a bunch of > numbers. > It is not harmful, but I dislike the fact that for every invocation of Maven, > the file gets generated again and again. This can quickly lead to tens of > files that are never used again anymore. I feel we should clean those files > when we're done using them. -- This message was sent by Atlassian Jira (v8.20.10#820010)