Merge pull request #67 from gnodet/MNG-6380
[MNG-6380] Option -Dstyle.color=always doesn't force color output
diff --git a/src/main/java/org/apache/maven/shared/utils/logging/MessageUtils.java b/src/main/java/org/apache/maven/shared/utils/logging/MessageUtils.java
index 74b85a4..8b0d9ce 100644
--- a/src/main/java/org/apache/maven/shared/utils/logging/MessageUtils.java
+++ b/src/main/java/org/apache/maven/shared/utils/logging/MessageUtils.java
@@ -21,6 +21,7 @@
import org.fusesource.jansi.Ansi;
import org.fusesource.jansi.AnsiConsole;
+import org.fusesource.jansi.AnsiMode;
/**
* Colored message utils, to manage colors consistently across plugins (only if Maven version is at least 3.5.0).
@@ -81,17 +82,13 @@
// hook can only set when JANSI is true
if ( shutdownHook != null )
{
- // if out and system_out are same instance again, ansi is assumed to be uninstalled
- if ( AnsiConsole.out == AnsiConsole.system_out )
+ try
{
- try
- {
- Runtime.getRuntime().removeShutdownHook( shutdownHook );
- }
- catch ( IllegalStateException ex )
- {
- // ignore - VM is already shutting down
- }
+ Runtime.getRuntime().removeShutdownHook( shutdownHook );
+ }
+ catch ( IllegalStateException ex )
+ {
+ // ignore - VM is already shutting down
}
}
}
@@ -113,7 +110,19 @@
{
if ( JANSI )
{
+ AnsiConsole.out().setMode( flag ? AnsiMode.Force : AnsiMode.Strip );
Ansi.setEnabled( flag );
+ System.setProperty( AnsiConsole.JANSI_MODE,
+ flag ? AnsiConsole.JANSI_MODE_FORCE : AnsiConsole.JANSI_MODE_STRIP );
+ boolean installed = AnsiConsole.isInstalled();
+ while ( AnsiConsole.isInstalled() )
+ {
+ AnsiConsole.systemUninstall();
+ }
+ if ( installed )
+ {
+ AnsiConsole.systemInstall();
+ }
}
}
@@ -194,7 +203,10 @@
{
synchronized ( STARTUP_SHUTDOWN_MONITOR )
{
- doSystemUninstall();
+ while ( AnsiConsole.isInstalled() )
+ {
+ doSystemUninstall();
+ }
}
}
};