我有一个groovy代码,其中包含“import groovy.json.JsonSlurper”。
我花了一天时间进行测试,并且我不知道如何使用声明性语法加载外部库。
这是我的代码:
pipeline {
agent any
import groovy.json.JsonSlurper
stages {
stage("test") {
steps {
}
}
}
}
我已经阅读了jenkins文档,我试图使用下一个但没有成功:
@Grab( 'groovy.json.JsonSlurper') import groovy.json.JsonSlurper
导入和@Grab都无法识别。有些想法?
谢谢!
答案 0 :(得分:0)
@Daniel Majano所说的关于import
语法是正确的,但是我发现的@Grab
语法在直接由Jenkins与Pipeline script
维护的Pipeline script from SCM
之间存在行为差异。
当我在测试人员管道作业的管道脚本中放置Grab命令时,我发现Grab命令是否存在或是否已被注释都没有任何区别。
但是,如果从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
:
因此,脚本验证器在调用它时就知道Grab批注,并且它同时具有group和module属性。在此示例中,我使用的是所谓的shorthand notation。