我有一个包含“import groovy.json.JsonSlurper”的groovy代码。
我花了一天的时间进行测试,但我不知道如何使用声明性语法加载外部库。
这是我的代码:
pipeline {
agent any
import groovy.json.JsonSlurper
stages {
stage("test") {
steps {
}
}
}
}
我已经阅读了詹金斯(Jenkins)文档,并且尝试使用下一个但没有成功:
@Grab('groovy.json.JsonSlurper')
导入groovy.json.JsonSlurper
无法识别import和@Grab。有想法吗
谢谢!
最佳答案
@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。
关于json - Jenkins:使用声明性语法从Jenkinsfile导入外部包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45075621/