2016-02-26 36 views
0

我很感兴趣,如果有一种简单的方法来将文件中的特定行存储到Groovy中的数组(我需要它在Jenkins中的GroovyAxis)。该文件应该是这样的:如何从Groovy中的数组中的文件中存储特定的行?

var1="value1 value2 etc" 

var2="a b etc" 

var3="test1 test2 test3 etc" 

我需要测试1测试2 TEST3等从VAR3存储在阵列中。现在我用这个:

def words = [] 
new File('/home/workstation/jenkins/params').eachLine { line -> 
    words << line 
} 

但它存储的每一行,我有到一个数组,所以我必须大力解决该配置文件来完成这项工作。

非常感谢你

+0

'如果(line.startsWith(“VAR3 ='))'?你有什么尝试?具体问题是什么? –

+0

你好,谢谢你的回答。我对Groovy没有任何认识(但是这是我在Jenkins必须做的事情的唯一方法)。上面的代码我发现了另一个问题发布在这里。我试图寻找修改方法来做我想做的事情,但没有成功。具体的问题是,我还没有找到一种方法来存储test1 test2 test3等没有var3 =或“,只是之间的值”。 – Georgian

+0

Groovy在JVM上运行,并使用Java字符串。阅读String的javadoc。它有像startsWith,substring,split等方法。 –

回答

0

你是非常接近!

def words = [:] 
new File('/home/workstation/jenkins/params').eachLine { line -> 
    (var, value) = line.split('=') 
    words << [(var): value.split(' ')] 
} 

结果是数组映射。关键是变量名称,值是一个数组。

更新

哦,这是一个属性文件...

Properties properties = new Properties() 
File propertiesFile = new. File('/home/workstation/jenkins/params') 
propertiesFile.withInputStream { properties.load(it) } 
def result = properties.var3.split(' ').collect { item.minus('"') } 
return result 
+0

我忘了过滤掉双引号。在我的头顶,我只是不记得如何去做。 –

+0

谢谢,有一点改变,它工作正常。我做了这样一个丑陋的方式(我不知道Groovy):'def result = [] Properties properties = new Properties() File propertiesFile = new File('/ home/workstation/jenkins/params') propertiesFile.withInputStream { properties.load(它) } 缓冲液= properties.var3 缓冲器2 = buffer.split(”“).toList() 用于(在缓冲器2项){ 结果=结果+项.minus(''') }' 返回结果 – Georgian

0

ConfigSlurper可能是有用的加载性能/配置:

def config = new ConfigSlurper(new File("my.conf").toURL()) 
assert config.var2 == "a b etc" 
相关问题