groovy.lang.MissingPropertyException:没有此类属性:

时间:2019-04-02 11:02:48

标签: groovy jenkins-pipeline jenkins-groovy

我正在努力理解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)
}

1 个答案:

答案 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)
}