我有一个包含“导入groovy.json.JsonSlurper”的groovy代码。
我花了一天时间进行测试,我不知道如何使用声明式语法加载外部库。
这是我的密码:
pipeline {
agent any
import groovy.json.JsonSlurper
stages {
stage("test") {
steps {
}
}
}
}
我读过jenkins文档,我试着使用下一个,但没有成功:
@ groovy.json.JsonSlurper (‘groovy.json.JsonSlurper’)导入groovy.json.JsonSlurper
导入和@抓取都不被识别。什么主意?
谢谢!
发布于 2018-08-08 22:42:05
@Daniel所说的关于import
语法是正确的,但我发现的@Grab
语法在Jenkins Pipeline script from SCM
中直接维护的Pipeline script
之间存在行为差异。
当我为测试人员管道作业在管道脚本中放置一个抓取命令时,我发现,无论是否存在抓取命令,还是将其注释掉,都没有任何区别。
但是,当从Pipeline script from SCM
中使用时,它会引发以下异常.
java.lang.RuntimeException: No suitable ClassLoader found for grab
我从SCM脚本中删除了它,最后一切都完成了。
附加背景
我不知道在SCM版本中抓取为什么会阻塞,但是groovy编辑器肯定有一些工作部件,因为如果您定义了一个部分抓取命令,它将给出一些验证错误,如您在下面的红色X框中看到的那样,指向断行,错误为The missing attribute "module" is required in @Grab annotations
。
因此,脚本验证器知道它调用它时的抓取注释,并且它有一个组属性和一个模块属性。在本例中,我使用的是所谓的速记符号。
https://stackoverflow.com/questions/45075621
复制相似问题