使用Groovy逐行读取文件并将其存储到列表中

3

我有一个名为apps.txt的文件,里面有三个应用程序名称

frontendapp

authorizationservice

connectorservice*

在Jenkins管道中,我想逐个对它们执行一些操作,因此我尝试使用以下代码将它们获取到Groovy列表中 -

                    list = readFile.readFileLineByLine("${workspace}/apps.txt").collect {it}
                    for (item in list) {
                        println "I need to perform some operations on files"
                    }

但是出现了 groovy.lang.MissingPropertyException。 如果我像这样使用 file 类 - list = new File("${workspace}/apps.txt").collect {it},那么它只会在 Jenkins 主节点上搜索文件,我会得到 fileNotFoundException。

如果我使用 list = readFile("${workspace}/apps.txt").collect {it},那么列表会逐个字符获取值。我如何从 apps.txt 中获取应用程序名称以便对每个应用程序执行操作。


4
def list = readFile("${workspace}/apps.txt").readLines() - undefined
2个回答

4

您的尝试接近成功,但有些混淆了。

以下是一些有效的方法:

def list = new File("${workspace}/apps.txt").text.readLines()

请注意 .text 调用的位置。
def list = readFile("${workspace}/apps.txt").readLines()

或者使用Jenkins提供的助手。

顺便提一下:.collect{it} 就是 .collect(),通常仅需要用于复制列表。由于从文件中读取的行已经被急切地读取,它们已经是副本了。


2
这对我来说在Windows工作器上有效。
script {
       def list = readFile("filesChanged").readLines()
       for(item in list){
          print item
          bat('type '+item) 
          }    
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接