两个嵌套的Groovy闭包——寻找更简洁的语法

两个嵌套的Groovy闭包——寻找更简洁的语法,groovy,jenkins-pipeline,Groovy,Jenkins Pipeline,我不熟悉Groovy语法,但花了一些时间研究它。我正在处理一个Jenkins文件,我有一个部分如下所示: configFileProvider([/* ... */]) { withCredentials([/* ... */]) { sh 'my command' } } Groovy语法是否支持相同逻辑的较短表达式?我不喜欢这里的缩进。您可以将任何闭包分配给变量并传递它。因此,您可以重构为: def shCommand = { withCredentials([...])

我不熟悉Groovy语法,但花了一些时间研究它。我正在处理一个Jenkins文件,我有一个部分如下所示:

configFileProvider([/* ... */]) {
  withCredentials([/* ... */]) {
    sh 'my command'
  }
}

Groovy语法是否支持相同逻辑的较短表达式?我不喜欢这里的缩进。

您可以将任何闭包分配给变量并传递它。因此,您可以重构为:

def shCommand = { withCredentials([...]) {
  sh 'my command'
}}
configFileProvider([...], shCommand)


问题不在于groovy,而在于它所需要的插件。但是,您可以将所有内容放在一行
configFileProvider([/*…*/]){withCredentials([/*…*/]){sh'my command'}
中,或者根据需要使用更简单的语法创建自己的
def shCommand = {
  sh 'my command'
}
configFileProvider([...]) {
  withCredentials([...], shCommand)
}