假设:
Model.Photos
此代码有效,并且调用库#!groovy
@Library('GreatUtils')
def utils = new com.X.Utils(script:this)
node {
stage('Call utils.check directly') {
utils.check()
}
}
。
utils
这会抛出 -
没有这样的属性:utils
对于类:groovy.lang.Binding`
有什么想法吗?
答案 0 :(得分:1)
在groovy函数中,无法访问其范围之外的变量声明,错误只是因为变量utils
超出了范围。
通过这样的参数传递它应该有效
#!groovy
@Library('GreatUtils')
def utils = new com.X.Utils(script:this)
node {
stage('Call utils.check indirectly') {
checkUtils(utils)
}
}
def checkUtils(utils) {
utils.check()
}
或者,如果您不想使用参数,您可以使用函数式编程样式并使用Closures之类的
#!groovy
@Library('GreatUtils')
def utils = new com.X.Utils(script:this)
def check = { -> utils.check() }
node {
stage('Call utils.check indirectly') {
check()
}
}
修改:
添加全局初始化可能性。
#!groovy
@Library('GreatUtils')
utils = new com.X.Utils(script:this)
node {
stage('Call utils.check indirectly') {
checkUtils()
}
}
def checkUtils() {
utils.check()
}
应该工作。