Class ScriptRunner

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public class ScriptRunner
    extends java.lang.Object
    implements java.io.Closeable
    Runs pre-/post-build hook scripts.
    Author:
    Benjamin Bentmann
    • Constructor Summary

      Constructors 
      Constructor Description
      ScriptRunner()
      Creates a new script runner with BSH and Groovy interpreters.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addScriptInterpreter​(java.lang.String id, ScriptInterpreter scriptInterpreter)
      Add new script Interpreter
      void close()
      Closes this script interpreter and releases any system resources associated with it.
      void run​(java.lang.String scriptDescription, java.io.File basedir, java.lang.String relativeScriptPath, java.util.Map<java.lang.String,​?> context, ExecutionLogger logger)
      Runs the specified hook script (after resolution).
      void run​(java.lang.String scriptDescription, java.io.File scriptFile, java.util.Map<java.lang.String,​?> context, ExecutionLogger logger)
      Runs the specified hook script.
      void setClassPath​(java.util.List<java.lang.String> classPath)
      Sets the additional class path for the hook scripts.
      void setGlobalVariable​(java.lang.String name, java.lang.Object value)
      Sets a global variable for the script interpreter.
      void setScriptEncoding​(java.lang.String encoding)
      Sets the file encoding of the hook scripts.
      • Methods inherited from class java.lang.Object

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

      • ScriptRunner

        public ScriptRunner()
        Creates a new script runner with BSH and Groovy interpreters.
    • Method Detail

      • addScriptInterpreter

        public void addScriptInterpreter​(java.lang.String id,
                                         ScriptInterpreter scriptInterpreter)
        Add new script Interpreter
        Parameters:
        id - The Id of interpreter
        scriptInterpreter - the Script Interpreter implementation
      • setGlobalVariable

        public void setGlobalVariable​(java.lang.String name,
                                      java.lang.Object value)
        Sets a global variable for the script interpreter.
        Parameters:
        name - The name of the variable, must not be null.
        value - The value of the variable, may be null.
      • setClassPath

        public void setClassPath​(java.util.List<java.lang.String> classPath)
        Sets the additional class path for the hook scripts. Note that the provided list is copied, so any later changes will not affect the scripts.
        Parameters:
        classPath - The additional class path for the script interpreter, may be null or empty if only the plugin realm should be used for the script evaluation. If specified, this class path will precede the artifacts from the plugin class path.
      • setScriptEncoding

        public void setScriptEncoding​(java.lang.String encoding)
        Sets the file encoding of the hook scripts.
        Parameters:
        encoding - The file encoding of the hook scripts, may be null or empty to use the platform's default encoding.
      • run

        public void run​(java.lang.String scriptDescription,
                        java.io.File basedir,
                        java.lang.String relativeScriptPath,
                        java.util.Map<java.lang.String,​?> context,
                        ExecutionLogger logger)
                 throws java.io.IOException,
                        ScriptException
        Runs the specified hook script (after resolution).
        Parameters:
        scriptDescription - The description of the script to use for logging, must not be null.
        basedir - The base directory of the project, must not be null.
        relativeScriptPath - The path to the script relative to the project base directory, may be null to skip the script execution and may not have extensions (resolution will search).
        context - The key-value storage used to share information between hook scripts, may be null.
        logger - The logger to redirect the script output to, may be null to use stdout/stderr.
        Throws:
        java.io.IOException - If an I/O error occurred while reading the script file.
        ScriptException - If the script did not return true of threw an exception.
      • run

        public void run​(java.lang.String scriptDescription,
                        java.io.File scriptFile,
                        java.util.Map<java.lang.String,​?> context,
                        ExecutionLogger logger)
                 throws java.io.IOException,
                        ScriptException
        Runs the specified hook script.
        Parameters:
        scriptDescription - The description of the script to use for logging, must not be null.
        scriptFile - The path to the script, may be null to skip the script execution.
        context - The key-value storage used to share information between hook scripts, may be null.
        logger - The logger to redirect the script output to, may be null to use stdout/stderr.
        Throws:
        java.io.IOException - If an I/O error occurred while reading the script file.
        ScriptException - If the script did not return true of threw an exception.
      • close

        public void close()
                   throws java.io.IOException
        Closes this script interpreter and releases any system resources associated with it.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException - if an I/O error occurs.