I wanted to dynamically load a class at runtime and run a function specified in the argument in groovy.
Example
./run.sh Utilities.uptime
To get that to work,
- Read in the argument from the command prompt
- Split the name of class and function
- Dynamically looked up the function
- Finally invoked it
- If an argument had to provided Example
./run.sh test "ABC D"
the code was modified very slightly
String classFunctionName = args[0]
logger.trace("classFunctionName - " + classFunctionName)
//Split the name of class and function
String[] split=classFunctionName.split("\.")
String className = split[0]
logger.trace("className - " + className)
//Name of function
String action = split[1]
logger.trace("action - " + action)
//Dynamically load class Utilities.environment = Class.forName(environmentName) logger.trace(Utilities.environment.toString()) def classAction = Class.forName(className) logger.trace(classAction.toString())
logger.trace("About to run " + classAction + "." + action + "()")
classAction."${action}"()
logger.trace("Completed " + classAction + "." + action + "()")
//If arguments are passed - Example ./run.sh test "ABC D"
if (args.size() > 1) {
String arguments = args[1]
logger.trace("About to run " + classAction + "." + action + "(" + arguments + ")")
//Dynamically call function
classAction."${action}"(arguments)
logger.trace("Completed " + classAction + "." + action + "(" + arguments + ")")
}





