是否可以在不使用手动映射args [] - > method_to_call的情况下从命令行调用groovy脚本方法?
例如,如果我有一个groovy脚本'MyGroovyScript.groovy',如:
def foo() {
}
def bar() {
}
我想从命令行调用foo()方法,如:
groovy MyGroovyScript.groovy foo
答案 0 :(得分:4)
我相信你能得到的最接近的是:
def foo() {
println "foo called"
}
def bar() {
println "bar called"
}
def woo( a, b ) {
println "Woo called with a=$a and b=$b"
}
static main( args ) {
if( args ) {
"${args.head()}"( *args.tail() )
}
}
然后运行以下命令将提供以下输出:
$ groovy test.groovy foo
foo called
$ groovy test.groovy bar
bar called
$ groovy test.groovy woo tim yates
Woo called with a=tim and b=yates
答案 1 :(得分:0)
与此同时,我找到的最短形式如下:
groovy -e "new MyGroovyScript().foo()"
如果要通过空格分隔的参数传递“ MyGroovyScript”和“ foo”,则可以使用bash命令进行播放。也许有一些更好的选择,但是其中之一:
bash -c 'groovy -e "new $0().$1()"' MyGroovyScript foo