'How to use map in groovy

Here is how my script currently looks like -

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)

This gives following output-

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

I want these values to go into another variable called "svnTag"

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

So that when I print svnTag, it output something like this-

SVN_TAG=ccsmp_v_1.37.0.846


Solution 1:[1]

You are not using a Map, but a List of String, where each element is in the form of <key>=<value>

If you want to parse your file to a Map, you could use something like:

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]
    }
}

Then you can use the values from the map with:

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

If your file is a valid property file (all lines are in form of key=value), you can use the readProperties step that will create a Properties object for you (that is in fact a Map):

def map = readProperties file: 'text2.txt'

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 VANAN