groovy.lang.MissingPropertyException: Нет такого свойства: - PullRequest
1 голос
/ 02 апреля 2019

Я пытаюсь разобраться в Groovy-скриптах, чтобы внести некоторые изменения в конвейер jenkins, и я продолжаю получать эту ошибку:

groovy.lang.MissingPropertyException: No such property: credentials for class:

Я пытался объявить переменную с def, но все равно получаю исключение, затмение не распознает, что свойство существует.

Что я делаю не так?!

#!/usr/bin/groovy

package common.pipeline

import common.pipeline.Credentials

Credentials credentials = new Credentials()

def withCredentials(steps) {
    credentials.productionPipeline(steps)
}

1 Ответ

4 голосов
/ 02 апреля 2019

Этот скрипт будет скомпилирован groovy в класс Script с определением поля внутри метода run и с другим методом withCredentials, который пытается получить доступ к полю (вроде этого):

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)
}
...