Java执行Groovy脚本
添加依赖
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
<version>3.0.19</version>
</dependency>
执行一个groovy脚本
public class GroovyExecutor {
public static final String DIR = "commands/";
public static void execute(String script) {
try (FileReader fileReader = new FileReader(DIR + script + ".groovy")) {
GroovyShell shell = new GroovyShell();
shell.evaluate(fileReader);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
execute("test");
}
}
commands/test.groovy
println "Hello World!"
执行一个groovy脚本中的函数
public static void executeScriptMethod(String scriptName) {
try (GroovyClassLoader cl = new GroovyClassLoader()) {
Class<?> scriptClass = cl.parseClass(new File(DIR + scriptName + ".groovy"));
//scriptClass.getMethod("run", Object.class).invoke(scriptClass.newInstance(), "groovy");
scriptClass.getMethod("run", Object.class).invoke(null, "groovy"); // 静态方法不需要实例
} catch (Exception e) {
throw new RuntimeException(e);
}
}
commands/test.groovy
class Command {
static def run(Object param) {
println "Hello " + param
}
}