Class SystemExitManager


  • public final class SystemExitManager
    extends java.lang.Object
    Will be used by BlockExitTransformer to replace System.exit(int) by this implementation.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private SystemExitManager()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void exit​(int status)
      Always throws a SystemExitException when System.exit(int) is called, instead of terminating the JVM.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • SystemExitManager

        private SystemExitManager()
    • Method Detail

      • exit

        public static void exit​(int status)
        Always throws a SystemExitException when System.exit(int) is called, instead of terminating the JVM.

        The exception is meant to be handled in the exec:java goal. On the one hand, this avoids that Java code called in process can terminate the JVM and the whole Maven build process with it. On the other hand, the exception handler can also differentiate between exit status 0 (OK) and non-0 (error) by inspecting SystemExitException.getExitCode():

        • Exit status 0 (OK): Just log the fact that System.exit(int) was called.
        • Exit status non-0 (error): In addition to logging, the exception is also passed on, failing the mojo execution as if the called Java code had terminated with an exception instead of trying to terminate the JVM with an error code.
        Parameters:
        status - the exit status