Jenkins构建Groovy脚本获取变更集文件名遇MissingPropertyException
解决Jenkins Groovy脚本获取TFS变更集文件名的MissingPropertyException问题
嘿,我一眼就看出问题所在啦!你遇到的groovy.lang.MissingPropertyException: No such property: paths for class: hudson.plugins.tfs.model.ChangeSet错误,是因为你把TFS插件的ChangeSet类和Git这类SCM的变更集类搞混了——TFS的ChangeSet根本没有paths这个属性!
别慌,我给你整理了正确的获取方式:
正确的Groovy脚本示例
TFS插件的ChangeSet类里,文件变更信息是存在changes属性里的,每个变更项是Change对象,你需要从Change的item属性里提取文件路径或文件名:
// 获取当前构建的所有变更集 def changeSets = build.changeSets // 遍历每个变更集 changeSets.each { changeSet -> // 遍历当前变更集里的每一项变更 changeSet.changes.each { change -> // 获取变更对应的文件对象 def tfsItem = change.item // 打印完整文件路径 println "变更文件路径: ${tfsItem.path}" // 如果只需要文件名,用这个 // println "变更文件名: ${tfsItem.name}" } }
额外技巧:区分变更类型
如果需要知道文件是被添加、修改还是删除的,可以通过change.changeType获取:
changeSet.changes.each { change -> def tfsItem = change.item println "变更类型: ${change.changeType} | 文件: ${tfsItem.path}" }
版本兼容提示
如果你的TFS插件版本比较旧,tfsItem.path可能无法正常获取,试试tfsItem.serverItem(服务器端路径)或者tfsItem.localItem(从属机上的本地路径),根据实际环境调整即可。
内容的提问来源于stack exchange,提问作者Nicole Phillips
相关产品推荐
相关产品推荐

