2016-07-07 10 views
2

@Fieldを使用すると、プライベートスコープフィールドに値を割り当てて、グローバルにアクセスできるようにすることができます。それは印刷し使用println options.e場合Groovy:グローバルスコープフィールドに動的値を割り当てる方法

Caught: java.lang.reflect.InvocationTargetException 
java.lang.reflect.InvocationTargetException 
     at Test.main(Test.groovy) 
Caused by: groovy.lang.MissingPropertyException: No such property: options for class: Test 
     at Test.<init>(Test.groovy) 
     ... 1 more 

しかし@Field def env = options.eなし:私は次のエラーを取得していますgroovy Test.groovy -e int

:として私はそれを実行している場合は

import groovy.transform.Field; 

def cli = new CliBuilder() 

cli.usage = 'groovy Test.groovy -e <environment-name>' 
cli.header = '\nAvailable options (use -h for help):\n' 

cli.with { 
    h(longOpt: 'help', 'Usage Information', required: false) 
    e(longOpt: 'environment', 'Environment Name', args: 1, required: true) 
} 

def options = cli.parse(args) 

if (!options || options.h) {  
    return 
} 

@Field def env = options.e 

println env 

:私は、スクリプトを次のようしている

int

どのようにグローバルスコープ変数に動的値を割り当てることができますか?

+0

私の小さな汚いソリューション: https://gist.github.com/chfstudio/51e58e56abb1e29ea53a68e7fd71197e – chf

答えて

1

移動し、それは、フィールドの定義に縛ら割り当てを持っていないので...

import groovy.transform.Field; 

@Field def env 
def cli = new CliBuilder() 

cli.usage = 'groovy Test.groovy -e <environment-name>' 
cli.header = '\nAvailable options (use -h for help):\n' 

cli.with { 
    h(longOpt: 'help', 'Usage Information', required: false) 
    e(longOpt: 'environment', 'Environment Name', args: 1, required: true) 
} 

def options = cli.parse(args) 

if (!options || options.h) {  
    return 
} 

env = options.e 

println env 
関連する問題