前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 调用 evaluate 方法执行 Groovy 脚本 | 参数传递 )

【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 调用 evaluate 方法执行 Groovy 脚本 | 参数传递 )

作者头像
韩曙亮
发布于 2023-03-30 02:29:04
发布于 2023-03-30 02:29:04
1.9K00
代码可运行
举报
运行总次数:0
代码可运行

文章目录

一、Groovy 脚本中调用另外一个 Groovy 脚本


1、调用 evaluate 方法执行 Groovy 脚本

【Groovy】Groovy 脚本调用 ( Groovy 脚本编译 | Groovy 脚本字节码文件分析 ) 博客中 , 已经分析了 Groovy 脚本的本质 , Groovy 脚本继承了 groovy.lang.Script 类 ;

调用 groovy.lang.Script 类的 evaluate 方法 , 传入 Groovy 脚本文件对应的 File 对象 , 即可执行该 Groovy 脚本 ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /**
     * 一个助手方法,允许使用此脚本绑定作为变量范围动态计算groovy表达式
     *
     * @param file 要执行的 Groovy 脚本文件 
     */
    public Object evaluate(File file) throws CompilationFailedException, IOException {
        GroovyShell shell = new GroovyShell(getClass().getClassLoader(), binding);
        return shell.evaluate(file);
    }

代码示例 : 两个 Groovy 脚本都在同一个目录中 ; 在 Groovy 脚本中调用如下代码 , 即可执行另外一个 Groovy 脚本 Script.groovy ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
evaluate(new File("Script.groovy"))

2、参数传递

在 Groovy 脚本中 , 调用另外一个 Groovy 脚本 , 如果要传入参数 , 直接定义 绑定作用域 args 参数 ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
args = []
args[0] = "arg0"
args[1] = "arg1"

这样在被调用的 Groovy 脚本中 , 就可以获取 上述 args 参数 ;

二、完整代码示例


1、调用者 Groovy 脚本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 要传入的参数
args = []
args[0] = "arg0"
args[1] = "arg1"

// 调用 Script.groovy 脚本
evaluate(new File("Script.groovy"))

2、被调用者 Groovy 脚本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*
    下面的 age 和 age2 都是变量定义
    age 变量的作用域是 本地作用域
    age2 变量的作用域是 绑定作用域
    一个是私有变量 , 一个是共有变量
 */

// 打印参数
println args

def age = "18"
age2 = "16"

println "$age , $age2"

/*
    定义一个函数
    在下面的函数中 , 可以使用 绑定作用域变量
    不能使用 本地作用域变量
 */
void printAge() {
    println "$age2"
    //println "$age"
}

printAge()

3、执行结果

上面的两个 Groovy 脚本都在相同目录 ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[arg0, arg1]
18 , 16
16
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Groovy】Groovy 脚本调用 ( Groovy 类中调用 Groovy 脚本 | 创建 GroovyShell 对象并执行 Groovy 脚本 | 完整代码示例 )
首先 , 创建 GroovyShell 对象 , 在构造函数中 , 需要传入 Binding 对象 ;
韩曙亮
2023/03/30
1.8K0
【Groovy】Groovy 脚本调用 ( Groovy 类中调用 Groovy 脚本 | 创建 GroovyShell 对象并执行 Groovy 脚本 | 完整代码示例 )
【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 绑定作用域 binding 变量分析 | Binding 类 variables 成员分析 )
分析 groovy.lang.Script 类的 evaluate 方法源码 , 在该方法中 , 创建了一个 GroovyShell 对象 ;
韩曙亮
2023/03/30
1.2K0
【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 绑定作用域 binding 变量分析 | Binding 类 variables 成员分析 )
【Groovy】Groovy 脚本调用 ( Java 类中调用 Groovy 脚本 )
Java 类中调用 Groovy 脚本 , 与 Groovy 类中调用 Groovy 脚本 , 代码基本类似 ;
韩曙亮
2023/03/30
1.9K0
【Groovy】Groovy 脚本调用 ( Java 类中调用 Groovy 脚本 )
【Groovy】Groovy 脚本调用 ( Groovy 类中调用 Groovy 脚本 | 参考 Script#evaluate 方法 | 创建 Binding 对象并设置 args 参数 )
可以参考 groovy.lang.Script 类的 evaluate 方法 , 通过 GroovyShell 在类方法中调用 Groovy 脚本 ;
韩曙亮
2023/03/30
2K0
【错误记录】Groovy工程中的文件查找策略 ( main 函数中需要使用 src/main/groovy/Script.groovy | Groovy 脚本直接使用代码相对路径 )
这个错误本身很简单 , 但是涉及到 Java 与 Groovy 的路径查找机制的不同 ;
韩曙亮
2023/03/30
2.5K0
【错误记录】Groovy工程中的文件查找策略 ( main 函数中需要使用 src/main/groovy/Script.groovy | Groovy 脚本直接使用代码相对路径 )
【Groovy】Groovy 脚本调用 ( Groovy 脚本中的作用域 | 本地作用域 | 绑定作用域 )
在 Groovy 脚本中 , 定义两个变量 , 一个使用 def 声明 , 一个直接声明变量 ;
韩曙亮
2023/03/30
1.3K0
【Groovy】Groovy 脚本调用 ( Groovy 脚本中的作用域 | 本地作用域 | 绑定作用域 )
【Groovy】Groovy 脚本调用 ( 命令行执行 Groovy 脚本并传入参数 | 获取 Groovy 脚本执行参数 )
在 Groovy 脚本 , Groovy 类 , Java 类中 , 可以调用 Groovy 脚本 ;
韩曙亮
2023/03/30
2.2K0
【Groovy】Groovy 脚本调用 ( 命令行执行 Groovy 脚本并传入参数 | 获取 Groovy 脚本执行参数 )
Groovy 笔记
Groovy 是基于 JVM 的 动态脚本语言,可以与 Java 无缝对接。Groovy 并不替代 Java,而是与 Java 互补
tonglei0429
2019/07/24
1.2K0
Groovy初学者指南
Groovy是一种基于Java平台的动态编程语言,它结合了Python、Ruby和Smalltalk等语言的特性,同时与Java无缝集成。在本篇博客中,我们将探讨Groovy与Java之间的联系与区别,深入了解Groovy的语法,并展示如何在Java中使用GroovyShell来运行Groovy脚本。
BookSea
2023/10/13
5570
【Groovy】Groovy 脚本调用 ( Groovy 脚本编译 | Groovy 脚本字节码文件分析 )
Groovy 脚本编译后生成的是 groovy.lang.Script 类 ; 该类继承自 GroovyObjectSupport 类 ;
韩曙亮
2023/03/30
2K0
Java调用Groovy
一、简介 Groovy是基于jvm的脚本语言。 二、demo maven使用加上依赖 <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy</artifactId> </dependency> 随便建个脚本文件 println 'I am ' + name; println 'My age is ' + age; System.out.println(dd); 然后跑main方法 public stati
叔叔
2018/07/25
1.3K0
GroovyShell 应用实践
在之前做性能测试框架设计的时候,对于用例形式和执行,我设计了一个以 Groovy 为用例语言的基础方案。当时还设计了一个基于文本的用例传输方案,作为分布式的性能测试框架基础,写了第一版的分布式性能测试框架。
FunTester
2025/01/23
830
GroovyShell 应用实践
JAVA安全之Groovy命令注入刨析
Groovy是一种基于Java平台的动态语言,其设计目标是为Java开发者提供一种更简洁、高效和灵活的方式来编写代码,它与Java语言具有良好的兼容性,允许开发者在Java项目中无缝使用Groovy代码,具有简洁的语法和强大的功能可以用于脚本编写、自动化以及构建工具等多个场景,Groovy提供了与Java互操作的能力并且可以轻松地执行命令行命令,很多JAVA项目中都会使用Groovy来动态执行命令而未进行任何校验从而导致RCE,本篇文章主要是填之前迟迟没去系统性归纳Groovy所挖的坑~
Al1ex
2024/12/09
2420
JAVA安全之Groovy命令注入刨析
【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 动态拦截函数 | 动态获取 MetaClass 中的方法 | evaluate 方法执行Groovy脚本 )
初始化 Student 对象 , 并执行 Student 对象的 hello 方法 ,
韩曙亮
2023/03/30
1.4K0
【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 动态拦截函数 | 动态获取 MetaClass 中的方法 | evaluate 方法执行Groovy脚本 )
复杂多变场景下的Groovy脚本引擎实战
因为之前在项目中使用了Groovy对业务能力进行一些扩展,效果比较好,所以简单记录分享一下,这里你可以了解:
冬夜先生
2021/10/12
1.6K0
使用Groovy实现Domain-Specific Languages 一
Groovy lets you omit parentheses around the arguments of a method call for top-level statements. "command chain" feature extends this by allowing us to chain such parentheses-free method calls, requiring neither parentheses around arguments, nor dots between the chained calls. The general idea is that a call like a b c d will actually be equivalent to a(b).c(d). This also works with multiple arguments, closure arguments, and even named arguments. Furthermore, such command chains can also appear on the right-hand side of assignments. Let’s have a look at some examples supported by this new syntax:
2022/07/10
6210
Google Aviator——轻量级 Java 表达式引擎实战
Drools(JBoss Rules )是一个开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行了所需的业务规则。
科技新语
2023/01/09
5.3K0
Google Aviator——轻量级 Java 表达式引擎实战
【Groovy】Groovy 脚本调用 ( Linux 中调用 Groovy 脚本 | Windows 中调用 Groovy 脚本 )
在 命令行 , Groovy 脚本 , Groovy 类 , Java 类中 , 可以调用 Groovy 脚本 ;
韩曙亮
2023/03/30
2K0
【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )
Groovy 类没有定义构造函数 , 但是可以使用如下形式的构造函数 , 为 Groovy 类设置初始值 ;
韩曙亮
2023/03/30
9.3K0
【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )
Python学习笔记整理(十二)
一、函数基础 函数可以计算出一个返回值。作用:最大化代码重用,最小化代码冗余,流程的分解 1、函数相关的语句和表达式 语句        例子 Calls        myfunc(‘diege','eggs',meat=lit) #使用函数 def,return,yield      def adder(a,b=1,*c):                           return a+b+c[0] global        changer():                 global x;x='new' lambda        Funcs=[lambad x:x**2,lambad x:x*3] 2、编写函数 def是可执行的代码,实时执行的,Python中所有语句都是实时执行的,if,while,def可嵌套,可以出现在任何地方,但往往包含在模块文件中, 并早模块导入时运行,函数还可以通过嵌套到if语句中去实现不同的函数定义。 def创建了一个对象并将其赋值给某一个变量名。 return将一个结果对象发送给调用者。 函数是通过赋值(对象引用)传递的。
py3study
2020/01/09
7030
推荐阅读
【Groovy】Groovy 脚本调用 ( Groovy 类中调用 Groovy 脚本 | 创建 GroovyShell 对象并执行 Groovy 脚本 | 完整代码示例 )
1.8K0
【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 绑定作用域 binding 变量分析 | Binding 类 variables 成员分析 )
1.2K0
【Groovy】Groovy 脚本调用 ( Java 类中调用 Groovy 脚本 )
1.9K0
【Groovy】Groovy 脚本调用 ( Groovy 类中调用 Groovy 脚本 | 参考 Script#evaluate 方法 | 创建 Binding 对象并设置 args 参数 )
2K0
【错误记录】Groovy工程中的文件查找策略 ( main 函数中需要使用 src/main/groovy/Script.groovy | Groovy 脚本直接使用代码相对路径 )
2.5K0
【Groovy】Groovy 脚本调用 ( Groovy 脚本中的作用域 | 本地作用域 | 绑定作用域 )
1.3K0
【Groovy】Groovy 脚本调用 ( 命令行执行 Groovy 脚本并传入参数 | 获取 Groovy 脚本执行参数 )
2.2K0
Groovy 笔记
1.2K0
Groovy初学者指南
5570
【Groovy】Groovy 脚本调用 ( Groovy 脚本编译 | Groovy 脚本字节码文件分析 )
2K0
Java调用Groovy
1.3K0
GroovyShell 应用实践
830
JAVA安全之Groovy命令注入刨析
2420
【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 动态拦截函数 | 动态获取 MetaClass 中的方法 | evaluate 方法执行Groovy脚本 )
1.4K0
复杂多变场景下的Groovy脚本引擎实战
1.6K0
使用Groovy实现Domain-Specific Languages 一
6210
Google Aviator——轻量级 Java 表达式引擎实战
5.3K0
【Groovy】Groovy 脚本调用 ( Linux 中调用 Groovy 脚本 | Windows 中调用 Groovy 脚本 )
2K0
【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )
9.3K0
Python学习笔记整理(十二)
7030
相关推荐
【Groovy】Groovy 脚本调用 ( Groovy 类中调用 Groovy 脚本 | 创建 GroovyShell 对象并执行 Groovy 脚本 | 完整代码示例 )
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文