我正在努力理解groovy脚本以对jenkins管道进行一些更改,但我不断收到此错误:
groovy.lang.MissingPropertyException: No such property: credentials for class:
我尝试使用def
声明变量,但仍然出现异常,eclipse无法识别该属性的存在。
我在做什么错?!
#!/usr/bin/groovy
package common.pipeline
import common.pipeline.Credentials
Credentials credentials = new Credentials()
def withCredentials(steps) {
credentials.productionPipeline(steps)
}
答案 0 :(得分:3)
该脚本将通过groovy编译成Script类,其中的字段定义为run
方法内,而另一个方法withCredentials
则试图访问该字段(类似这样):< / p>
import common.pipeline.Credentials
class Script1 extends Script {
def withCredentials(steps) {
credentials.productionPipeline(steps)
}
def run(args) {
Credentials credentials = new Credentials()
}
}
如您所见,这是行不通的,因为凭据不在类的“字段”级别上。
Groovy具有注释,可以实现此目的:
#!/usr/bin/groovy
package common.pipeline
import common.pipeline.Credentials
import groovy.transform.Field
@Field Credentials credentials = new Credentials()
def withCredentials(steps) {
credentials.productionPipeline(steps)
}