This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch backport/11901-to-maven-4.0.x
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 1b392858f6622e149ef58c80f481f8b23cc10c95
Author: Stefan Oehme <[email protected]>
AuthorDate: Wed May 20 23:13:18 2026 +0200

    Fix logging setup/teardown order (#11901)
    
    Reorder ProjectBuildLogAppender registration in LookupInvoker so that
    it is added to the closeables list after the terminal setup. Since
    closeables are closed in reverse order (LIFO), this ensures the log
    sink is deregistered before the terminal is torn down, preventing
    StackOverflowErrors during shutdown.
    
    Closes #11901
---
 .../java/org/apache/maven/cling/invoker/LookupInvoker.java     | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git 
a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java
 
b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java
index 5ec158321d..d29e09a5fc 100644
--- 
a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java
+++ 
b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java
@@ -311,11 +311,6 @@ protected BuildEventListener 
doDetermineBuildEventListener(C context) {
 
     protected final void createTerminal(C context) {
         if (context.terminal == null) {
-            // Create the build log appender; also sets MavenSimpleLogger sink
-            ProjectBuildLogAppender projectBuildLogAppender =
-                    new 
ProjectBuildLogAppender(determineBuildEventListener(context));
-            context.closeables.add(projectBuildLogAppender);
-
             MessageUtils.systemInstall(
                     builder -> doCreateTerminal(context, builder),
                     terminal -> doConfigureWithTerminal(context, terminal));
@@ -323,6 +318,11 @@ protected final void createTerminal(C context) {
             context.terminal = MessageUtils.getTerminal();
             context.closeables.add(MessageUtils::systemUninstall);
             MessageUtils.registerShutdownHook(); // safety belt
+
+            // Create the build log appender; also sets MavenSimpleLogger sink
+            ProjectBuildLogAppender projectBuildLogAppender =
+                    new 
ProjectBuildLogAppender(determineBuildEventListener(context));
+            context.closeables.add(projectBuildLogAppender);
         } else {
             doConfigureWithTerminal(context, context.terminal);
         }

Reply via email to