Groovy斜杠运算符(Jenkins job-dsl)

use*_*641 5 groovy jenkins jenkins-plugins jenkins-job-dsl

我们想了解一些遗留的job-dsl脚本,但不知道"斜杠运算符"在这种情况下意味着什么(因为它不能分割):

def command = (shells.first() / command)
Run Code Online (Sandbox Code Playgroud)

我们试图在几本Groovy书中查找它,但只发现了一个简单的解决方案,它意味着"分裂".

dec*_*ion 7

这是一个XML Node操作,用于返回XML 节点的子节点,如果不存在则创建它.可能是此command节点中第一个节点下的shells节点.

Groovy允许运算符重载,因此它相同的"除法"运算符,只是稍微重新定义.这在其他语言中很常见(但也存在争议),允许运营商过载,但允许更丰富的DSL.

快速查看JobDSL源代码(旧版本)后,似乎他们正在使用类NodeEnhancement,特别是这个JavaDoc:

/**
Add div and leftShift operators to Node.
div - Will return the first child that matches name, and if it doesn't exists, it creates
...
**/
Run Code Online (Sandbox Code Playgroud)

  • 那是对的.另请参阅Job DSL wiki,它解释了XML操作的重载操作符:https://github.com/jenkinsci/job-dsl-plugin/wiki/The-Configure-Block#transforming-xml (2认同)