我正在尝试将变量数据与我的实际脚本groovy文件分开。
def test = [a,b,c]
def test2 = ['foo': [a,x,y], 'bar': [q,w,e]]
def function(String var){}
def function2 {
test.each
{
item ->
print test
}
}
因为变量中的值不断变化而不是脚本。如何让我的groovy读取变量文件并在运行时加载它?
我希望它看起来像这样。
variables.properties
def test = [a,b,c]
def test2 = ['foo': [a,x,y], 'bar': [q,w,e]]
main.groovy
load ( variable.properties)
def function(String var){}
def function2 {
test.each
{
item ->
print test
}
}
答案 0 :(得分:0)
在Groovy中,可以将数据评估为Groovy代码。这是一项强大的技术。对你的目标来说,这可能有点多,但是可行。
考虑这个config.data
文件(它是一个Groovy文件,但可以命名为任何东西):
test = ['a','b','c']
test2 = ['foo': ['a','x','y'], 'bar': ['q','w','e']]
和App.groovy
文件。它在Binding
中设置了GroovyShell
个变量。 Config
在shell中进行评估,我们可以在主应用程序中引用变量。
def varMap = [:]
varMap["test"] = []
varMap["test2"] = [:]
def binding = new Binding(varMap)
def shell = new GroovyShell(binding)
def function2 = { test, test2 ->
test.each { println "test item: ${it}" }
test2.each { println "test2 item: ${it}" }
}
// ------ main
// load Config and evaluate it
def configText = new File(args[0]).getText()
shell.evaluate(configText)
def test = varMap["test"]
def test2 = varMap["test2"]
function2(test, test2)
示例用法:
$ groovy App.groovy config.data
test item: a
test item: b
test item: c
test2 item: foo=[a, x, y]
test2 item: bar=[q, w, e]