You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 15:08:12