2017-07-10 3 views
0

実際のスクリプトgroovyファイルから変数データを分離しようとしています。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]] 

グルービーで

+0

はどのようにファイルのように、あなたは次のようになりますか? – daggett

+0

@daggett質問に答えるために質問を更新しました – ShakyaS

+0

変数定義を明示的にGroovyにする必要がありますか、通常のデータ形式(JSONプロパティなど)を使用できますか? –

答えて

0
load (variable.properties) 

def function(String var){} 
def function2 { 
test.each 
{ 
    item -> 
print test 


} 
} 

main.groovy、Groovyのコードとしてデータを評価することができます。これは強力なテクニックです。あなたの目標には間違いなく多少なりともですが、うまくいくでしょう。

test = ['a','b','c'] 
test2 = ['foo': ['a','x','y'], 'bar': ['q','w','e']] 

App.groovyファイル:

このconfig.dataファイルを(それがGroovyのファイルですが、自由に名前を付けることができます)考えてみましょう。変数BindingGroovyShellに設定します。 Configはシェル内で評価され、メインアプリで変数を参照できます。

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] 
+0

'java.io.FileNotFoundException @DaveNewton:config.data(そのようなファイルまたはディレクトリ)' 私は – ShakyaS

+0

'config.data'ファイルは' App.groovy'ファイルと同じディレクトリにある必要があります。このエラーを取得し、上記のコマンドラインで渡されます。 –

+0

ありがとうございました。それは働いた – ShakyaS

関連する問題