#groovy #closures #jenkins-groovy
Вопрос:
У меня есть закрытие, как показано ниже, и я хочу получить значение от a, b, c.
#!/usr/bin/env groovy
entry {
a = false
b = "nodejs"
c = "xxx"
}
println entry.a
println entry.b
println entry.c
Есть ли какой-нибудь способ, которым я могу этого достичь ?
Я всегда получал ошибку, как показано ниже
% groovy jenkinsfile.groovy
Caught: groovy.lang.MissingMethodException: No signature of method: jenkinsfile.entry() is applicable for argument types: (jenkinsfile$_run_closure1) values: [jenkinsfile$_run_closure1@12aba8be]
Possible solutions: every(), every(groovy.lang.Closure), any(), any(groovy.lang.Closure), notify(), identity(groovy.lang.Closure)
groovy.lang.MissingMethodException: No signature of method: jenkinsfile.entry() is applicable for argument types: (jenkinsfile$_run_closure1) values: [jenkinsfile$_run_closure1@12aba8be]
Possible solutions: every(), every(groovy.lang.Closure), any(), any(groovy.lang.Closure), notify(), identity(groovy.lang.Closure)
at jenkinsfile.run(jenkinsfile.groovy:2)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Я должен использовать этот способ, потому что у меня много файлов Дженкинса, написанных в этом формате, и я хочу получать значения из файла Дженкинса. Это формат из файла Дженкинса.
Комментарии:
1. Нет, тогда это невозможно, если вы не можете или не хотите это изменить
2.
entry {a=false ...}
это не завершение. это похоже на вызов вызываемой функцииentry
, которая принимает параметр тело замыкания, являющееся блоком между { и }. Поскольку функция неentry
определена, вы получаете эту ошибку.
Ответ №1:
как насчет того, чтобы использовать для этого литерал карты:
entry = [
a:false,
b:"nodejs",
c:"xxx"
]
println entry.a
println entry.b
println entry.c
Комментарии:
1. Я должен использовать этот способ, потому что у меня много файлов Дженкинса, написанных в этом формате, и я хочу получать значения из файла Дженкинса. Это формат из файла Дженкинса.
2. Возможно, имеет смысл прочитать эти файлы в виде текста и проанализировать значения с помощью некоторого регулярного выражения