如何从Jenkins WORKSPACE文件生成Groovy列表并构建对应键值映射?
问题1:将Jenkins WORKSPACE中文件内容转为Groovy列表
你的WORKSPACE下目标文件内容为:
"element1", "element2", "element3", "element4"
需要转换为Groovy列表:
List components = ["element1", "element2", "element3", "element4"]
你之前的代码错误在于:sh命令返回字符串,调用.trim()后仍是String类型,直接用.componentsList.addAll()会触发MissingPropertyException——String类不存在componentsList字段。
用Groovy原生方法实现的正确代码:
// Jenkins中直接通过env.WORKSPACE获取工作空间路径 def filePath = "${env.WORKSPACE}/File" def fileContent = new File(filePath).text.trim() // 处理字符串:按", "分割后去除每个元素的引号 List componentsList = fileContent.split(/", "/).collect { it.replace('"', '') } // 验证输出 println componentsList // 输出:[element1, element2, element3, element4]
问题2:修正组件与链接的配对结果
你的Components文件内容为单行多元素格式(如component1, component2, component3, component4),Links文件同理。之前的代码用collect { it.trim() }逐行读取,会把整行作为单个元素存入列表,导致transpose后生成错误的嵌套结构。
正确处理代码:
def componentsFilePath = "${env.WORKSPACE}/Components" def linksFilePath = "${env.WORKSPACE}/Links" // 读取文件内容,分割为单个元素并清理空格 def components = new File(componentsFilePath).text.trim().split(/, /).collect { it.trim() } def links = new File(linksFilePath).text.trim().split(/, /).collect { it.trim() } // 转置配对并生成预期结构 def result = [components, links].transpose().collect { comp, link -> [name: comp, link: link] } println result // 输出:[[name:component1, link:link1], [name:component2, link:link2], [name:component3, link:link3], [name:component4, link:link4]]
内容的提问来源于stack exchange,提问作者macder
相关产品推荐
相关产品推荐

