IntelliJ中的Jenkins管道与GDSL。警告:';节点';无法应用于';(groovy.lang.closure<;Object>;)&x27;

IntelliJ中的Jenkins管道与GDSL。警告:';节点';无法应用于';(groovy.lang.closure<;Object>;)&x27;,jenkins,intellij-idea,groovy,Jenkins,Intellij Idea,Groovy,我将Jenkins与管道一起使用,并使用Jenkins文件定义了脚本管道。它看起来像这样: node { /* some stages */ } 我已经将Jenkins附带的GDSL文件导入IntelliJ。现在我得到了语法高亮显示,但整个文件在一个警告块中高亮显示,IntelliJ显示以下消息: 'node' cannot be applied to '(groovy.lang.closure<Object>)' “节点”不能应用于“(groovy.lang.closure

我将Jenkins与管道一起使用,并使用
Jenkins文件
定义了脚本管道。它看起来像这样:

node {
  /* some stages */
}
我已经将Jenkins附带的GDSL文件导入IntelliJ。现在我得到了语法高亮显示,但整个文件在一个警告块中高亮显示,IntelliJ显示以下消息:

'node' cannot be applied to '(groovy.lang.closure<Object>)'
“节点”不能应用于“(groovy.lang.closure)”

我认为语法定义可能不支持将节点对象作为root,但如果我尝试将
管道
编写为root,则会出现相同的警告。

我找到了解决方案。需要对
pipeline.gdsl
文件(例如,从Jenkins下载并由我们放入IntelliJ的gdsl文件)进行小的更改

在gdsl文件中找到以下行:

method(name: 'node', type: 'Object', 
       params: [label:java.lang.String, body:'Closure'], 
       doc: 'Allocate node')
并在前一行的基础上添加此行:

method(name: 'node', type: 'Object', 
      params: [body:'Closure'], 
      doc: 'Allocate node')

这将在语法树中创建一个重载定义,告诉IntelliJ node方法有两个版本,一个接受
字符串和
闭包,另一个只接受Jenkins Jira中的
闭包

跟踪问题:我试过了,但没有成功。然后我找到了这个帖子,所以我再试了一次。。。我还必须重新启动Idea来更新gdsl。