Groovy缺少财产异常

时间:2018-03-21 15:34:26

标签: jenkins groovy changeset

我有一个jenkins构建,需要获取在变更集中签入的所有文件的文件名。

我在奴隶计算机上安装了groovy并配置了Jenkins来使用它。我正在运行下面的脚本应该返回名称(或者我认为这也可能是错误的)并打印到控制台屏幕但是我收到此错误:

groovy.lang.MissingPropertyException: No such property: paths for class: hudson.plugins.tfs.model.ChangeSet

这是Groovy系统脚本:

import hudson.plugins.tfs.model.ChangeSet

// work with current build
def build = Thread.currentThread()?.executable

// get ChangesSets with all changed items
def changeSet= build.getChangeSet()
def items = changeSet.getItems()
def affectedFiles = items.collect { it.paths }

// get file names
def fileNames = affectedFiles.flatten().findResults
fileNames.each {
    println "Item: $it" // `it` is an implicit parameter corresponding to the current element
}

我是Groovy和Jenkins的新手,所以如果它的语法问题或者如果我错过了一步,请告诉我。

1 个答案:

答案 0 :(得分:1)

我不知道您使用的jenkins版本,但根据ChangeSet的源代码,您可以找到here我建议您替换第9行用:

 def affectedFiles = items.collect { it.getAffectedPaths() }
 // or with the equivalent more groovy-idiomatic version
 def affectedFiles = items.collect { it.affectedPaths }

如果会有更多问题,请随意评论答案。