我一直在努力理解下面的管道常规代码:
emailext (
subject: "STARTED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
body: """<p>STARTED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
<p>Check console output at "<a href='${env.BUILD_URL}'>${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>"</p>""",
recipientProviders: [[$class: 'DevelopersRecipientProvider']]
)
1)类($ class)之前的美元符号是否有特殊含义?我知道它指的是类类型
DevelopersRecipientProvider
,但是$class
在groovy中是某种特殊的保留字来表示类类型吗?2)在源代码中,
recipientProviders
是List
,但是在上面的代码中到底给它分配了什么?它是地图列表吗?3)emailext插件源代码在哪里定义了emailext?我在插件源代码中的所有.groovy文件中搜索了emailext,但似乎找不到上面的emailext调用。
如果有人能对上述内容有所了解,我将不胜感激,谢谢。
最佳答案
1)2)大致相同:[$class: 'DevelopersRecipientProvider']
是具有键'$class'
(注意它是字符串文字)和值'DevelopersRecipientProvider'
的映射文字。没什么特别的。
关于recipientProviders: [[$class: 'DevelopersRecipientProvider']]
,[[$class: 'DevelopersRecipientProvider']]
是地图列表,'recipientProviders'
是与'subject'
或'body'
相同的键。
您可能会认为emailext
是带有签名的方法:void emailext(Map<String, Object> map)
3)emailext
是用Java实现的方法。您可以找到源代码here和here。