我是靠谱客的博主 善良海燕,最近开发中收集的这篇文章主要介绍Groovy脚本执行,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Groovy是一个可以解释执行的语言,在解释执行的情况下具有以下基础语法特征。
groovy xxx.groovy方式运行一个groovy文件.

在解释执行的Groovy文件中,有如下特点:

  1. 文件运行在一个Script对象中。
  2. def关键字可以省略

举个例子:

//省略def不写
name = "XiaoMing123"

//闭包不写def
myClosure = {
    age = 3
    println(age)
}

println(name)
myClosure.call()
//运行在Script类中
println(this instanceof Script) //返回true

输出:

XiaoMing123
3
true

evaluate函数

evaluate函数可以调用另一个脚本文件,并把Scriptbinding对象传过去。
函数声明:
evaluate(File file)

  • file为脚本位置

举个例子:

我们有两个脚本文件ScriptOneScriptTwo

//ScriptOne.groovy
println("我是第一个ScriptOne")

result=evaluate(new File("/Users/fmy/IdeaProjects/groovy2/src/main/groovy/ScriptTwo.groovy"))

println(result)
//ScriptTwo.groovy
println("我是第二个ScriptTwo")
"第二个脚本的返回结果 ლ(′◉❥◉`ლ)"

输出:

我是第一个ScriptOne
我是第二个ScriptTwo
第二个脚本的返回结果 ლ(′◉❥◉`ლ)

Script中有一个属性binding,而binding内部有一个variables存储当前环境的变量,如当前声明的变量或者启动脚本传入的参数。当执行一个脚本时如果存在variables保存的变量那么可以直接使用。evaluate调用时会把当前脚本的binding传入下一个脚本中。

接下来看一个复杂的例子:
三个文件:

  1. Main.groovy
  2. MyScript.groovy
  3. MyScript2.groovy
//Main.groovy

//省略def不写
name = "XiaoMing123"

//闭包不写def
myClosure = {
    age = 3
    println(age)
}
//调用MyScript 并自动把自身的binding传入下一个.
evaluate(new File("/Users/fmy/IdeaProjects/groovy2/src/main/groovy/MyScript.groovy"))
//MyScript.groovy

//println(binding.variables.name)
age = 3

//输出Main.groovy中声明的name变量
println("MyScript:name=" + name)
println("MyScript:args[0]=" +args[0])
//调用MyScript2,把自身的binding和上级父亲Main的bingding一起传入给下一级
evaluate(new File("/Users/fmy/IdeaProjects/groovy2/src/main/groovy/MyScript2.groovy"))

MyScript2.groovy

//MyScript2.groovy


println("MyScript2:name=" + name)
println("MyScript2:age=" + age)


调用groovy Main.groovy aa 传入了一个aa参数
输出:

MyScript:name=XiaoMing123
MyScript:args[0]=aa
MyScript2:name=XiaoMing123
MyScript2:age=3

编译时环境运行脚本

如果你想在编译版本groovy运行脚本请用如下方式:

class Main {
    public static void main(String[] args) {

        def binding = new Binding()
        binding.setVariable("args", ["hello"])
        binding.setProperty('name',"XiaoMing")
        def shell = new GroovyShell(binding)

        shell.evaluate(new File("/Users/fmy/IdeaProjects/groovy2/src/main/groovy/MyScript.groovy"))
    }
}

最后

以上就是善良海燕为你收集整理的Groovy脚本执行的全部内容,希望文章能够帮你解决Groovy脚本执行所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部