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

问题描述 投票:0回答:2

我有一个名为 apps.txt 的文件,其中包含三个应用程序名称

前端应用程序

授权服务

连接器服务*

在詹金斯管道中,我想对它们一一执行一些操作,所以我尝试使用此代码将它们放入常规列表中-

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

但出现 groovy.lang.MissingPropertyException。 如果我使用这样的文件类 -

list = new File("${workspace}/apps.txt").collect {it}
,那么它仅在 Jenkins 主节点上搜索文件,并且我得到 fileNotFoundException。

如果我使用

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

jenkins groovy devops
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) 
          }    
        }
© www.soinside.com 2019 - 2024. All rights reserved.