Class ScriptRunner
- java.lang.Object
-
- org.apache.maven.shared.scriptinterpreter.ScriptRunner
-
public class ScriptRunner extends java.lang.ObjectRuns pre-/post-build hook scripts.- Version:
- $Id: ScriptRunner.java 1797598 2017-06-04 18:41:18Z hboutemy $
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<java.lang.String>classPathThe additional class path for the script interpreter, nevernull.private java.lang.StringencodingThe file encoding of the hook scripts ornullto use platform encoding.private java.util.Map<java.lang.String,java.lang.Object>globalVariablesThe common set of global variables to pass into the script interpreter, nevernull.private org.apache.maven.plugin.logging.LoglogThe mojo logger to print diagnostic to, nevernull.private java.util.Map<java.lang.String,ScriptInterpreter>scriptInterpretersThe supported script interpreters, indexed by the lower-case file extension of their associated script files, nevernull.
-
Constructor Summary
Constructors Constructor Description ScriptRunner(org.apache.maven.plugin.logging.Log log)Creates a new script runner.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddScriptInterpreter(java.lang.String id, ScriptInterpreter scriptInterpreter)private voidexecuteRun(java.lang.String scriptDescription, java.io.File scriptFile, java.util.Map<java.lang.String,? extends java.lang.Object> context, ExecutionLogger logger, java.lang.String stage, boolean failOnException)private ScriptInterpretergetInterpreter(java.io.File scriptFile)Determines the script interpreter for the specified script file by looking at its file extension.private org.apache.maven.plugin.logging.LoggetLog()Gets the mojo logger.private java.io.FileresolveScript(java.io.File scriptFile)Gets the effective path to the specified script.voidrun(java.lang.String scriptDescription, java.io.File basedir, java.lang.String relativeScriptPath, java.util.Map<java.lang.String,? extends java.lang.Object> context, ExecutionLogger logger, java.lang.String stage, boolean failOnException)Runs the specified hook script (after resolution).voidrun(java.lang.String scriptDescription, java.io.File scriptFile, java.util.Map<java.lang.String,? extends java.lang.Object> context, ExecutionLogger logger, java.lang.String stage, boolean failOnException)Runs the specified hook script.voidsetClassPath(java.util.List<java.lang.String> classPath)Sets the additional class path for the hook scripts.voidsetGlobalVariable(java.lang.String name, java.lang.Object value)Sets a global variable for the script interpreter.voidsetScriptEncoding(java.lang.String encoding)Sets the file encoding of the hook scripts.
-
-
-
Field Detail
-
log
private org.apache.maven.plugin.logging.Log log
The mojo logger to print diagnostic to, nevernull.
-
scriptInterpreters
private java.util.Map<java.lang.String,ScriptInterpreter> scriptInterpreters
The supported script interpreters, indexed by the lower-case file extension of their associated script files, nevernull.
-
globalVariables
private java.util.Map<java.lang.String,java.lang.Object> globalVariables
The common set of global variables to pass into the script interpreter, nevernull.
-
classPath
private java.util.List<java.lang.String> classPath
The additional class path for the script interpreter, nevernull.
-
encoding
private java.lang.String encoding
The file encoding of the hook scripts ornullto use platform encoding.
-
-
Method Detail
-
addScriptInterpreter
public void addScriptInterpreter(java.lang.String id, ScriptInterpreter scriptInterpreter)
-
getLog
private org.apache.maven.plugin.logging.Log getLog()
Gets the mojo logger.- Returns:
- The mojo logger, never
null.
-
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 benull.value- The value of the variable, may benull.
-
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 benullor 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 benullor 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,? extends java.lang.Object> context, ExecutionLogger logger, java.lang.String stage, boolean failOnException) throws java.io.IOException, RunFailureExceptionRuns the specified hook script (after resolution).- Parameters:
scriptDescription- The description of the script to use for logging, must not benull.basedir- The base directory of the project, must not benull.relativeScriptPath- The path to the script relative to the project base directory, may benullto 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 benull.logger- The logger to redirect the script output to, may benullto use stdout/stderr.stage- The stage of the build job the script is invoked in, must not benull. This is for logging purpose only.failOnException- Iftrueand the script throws an exception, then aRunFailureExceptionwill be thrown, otherwise aRunErrorExceptionwill be thrown on script exception.- Throws:
java.io.IOException- If an I/O error occurred while reading the script file.RunFailureException- If the script did not returntrueof threw an exception.
-
run
public void run(java.lang.String scriptDescription, java.io.File scriptFile, java.util.Map<java.lang.String,? extends java.lang.Object> context, ExecutionLogger logger, java.lang.String stage, boolean failOnException) throws java.io.IOException, RunFailureExceptionRuns the specified hook script.- Parameters:
scriptDescription- The description of the script to use for logging, must not benull.scriptFile- The path to the script, may benullto skip the script execution.context- The key-value storage used to share information between hook scripts, may benull.logger- The logger to redirect the script output to, may benullto use stdout/stderr.stage- The stage of the build job the script is invoked in, must not benull. This is for logging purpose only.failOnException- Iftrueand the script throws an exception, then aRunFailureExceptionwill be thrown, otherwise aRunErrorExceptionwill be thrown on script exception.- Throws:
java.io.IOException- If an I/O error occurred while reading the script file.RunFailureException- If the script did not returntrueof threw an exception.
-
executeRun
private void executeRun(java.lang.String scriptDescription, java.io.File scriptFile, java.util.Map<java.lang.String,? extends java.lang.Object> context, ExecutionLogger logger, java.lang.String stage, boolean failOnException) throws java.io.IOException, RunFailureException- Throws:
java.io.IOExceptionRunFailureException
-
resolveScript
private java.io.File resolveScript(java.io.File scriptFile)
Gets the effective path to the specified script. For convenience, we allow to specify a script path as "verify" and have the plugin auto-append the file extension to search for "verify.bsh" and "verify.groovy".- Parameters:
scriptFile- The script file to resolve, may benull.- Returns:
- The effective path to the script file or
nullif the input wasnull.
-
getInterpreter
private ScriptInterpreter getInterpreter(java.io.File scriptFile)
Determines the script interpreter for the specified script file by looking at its file extension. In this context, file extensions are considered case-insensitive. For backward compatibility with plugin versions 1.2-, the BeanShell interpreter will be used for any unrecognized extension.- Parameters:
scriptFile- The script file for which to determine an interpreter, must not benull.- Returns:
- The script interpreter for the file, never
null.
-
-