如何在 groovy 中使用地图

How to use map in groovy

这是我的脚本目前的样子 -

baseList = readFile('text2.txt').split('\n') as List
def cleanList = []
for (i=0; i < baseList.size; i++) {
   if (baseList[i].contains('=')){
     cleanList += baseList[i]
   }
}
print(cleanList)

这给出了以下输出-

[Pipeline] echo
[version.build=874, version.maintenance=0, version.major=1, version.minor=37]

我希望这些值进入另一个名为“svnTag”的变量

def svnTag="ccsmp_v_${version.major} ${version.minor} ${version.maintenance} ${version.build}"

所以当我打印 svnTag 时,它输出这样的东西-

SVN_TAG=ccsmp_v_1.37.0.846

您使用的不是 Map,而是 StringList,其中每个元素的形式为 <key>=<value>

如果你想将你的文件解析为地图,你可以使用类似的东西:

def baseList = readFile('text2.txt').split('\n') as List
def map = [:]
for (el in baseList) {
    if (el.contains('=')) {
        def parts = el.split('=')
        map[parts[0]] = parts[1]
    }
}

然后您可以将地图中的值用于:

def svnTag="ccsmp_v_${map['version.major']} ${map['version.minor']} ${map['version.maintenance']} ${map['version.build']}"

如果您的文件是有效的 属性 文件(所有行都采用 key=value 的形式),您可以使用 readProperties 步骤为您创建一个 Properties 对象(那实际上是 Map):

def map = readProperties file: 'text2.txt'