首先 , 创建 GroovyShell 对象 , 在构造函数中 , 需要传入 Binding 对象 ;
def shell = new GroovyShell(getClass().getClassLoader(), binding)
然后 , 设置要调用的 Groovy 脚本对应的 File 文件对象 ;
def file = new File("Script.groovy")
最后 , 调用 GroovyShell 对象的 evaluate 方法 , 执行 Groovy 脚本 ;
shell.evaluate(file)
代码示例 :
class Test {
void startScript() {
// 注意这里创建 groovy.lang.Binding
def binding = new Binding()
// 设置 args 参数到 Binding 中的 variable 成员中
binding.setVariable("args", ["arg0", "arg1"])
// 执行 Groovy 脚本
def shell = new GroovyShell(getClass().getClassLoader(), binding)
def file = new File("Script.groovy")
shell.evaluate(file)
}
}
new Test().startScript()
class Test {
void startScript() {
// 注意这里创建 groovy.lang.Binding
def binding = new Binding()
// 设置 args 参数到 Binding 中的 variable 成员中
binding.setVariable("args", ["arg0", "arg1"])
// 执行 Groovy 脚本
def shell = new GroovyShell(getClass().getClassLoader(), binding)
def file = new File("Script.groovy")
shell.evaluate(file)
}
}
new Test().startScript()
/*
下面的 age 和 age2 都是变量定义
age 变量的作用域是 本地作用域
age2 变量的作用域是 绑定作用域
一个是私有变量 , 一个是共有变量
*/
// 打印参数
println args
def age = "18"
age2 = "16"
// 打印绑定作用域变量
println binding.variables
println "$age , $age2"
/*
定义一个函数
在下面的函数中 , 可以使用 绑定作用域变量
不能使用 本地作用域变量
*/
void printAge() {
println "$age2"
//println "$age"
}
printAge()
上面的两个 Groovy 脚本都在相同目录 ;
[arg0, arg1]
[args:[arg0, arg1], age2:16]
18 , 16
16