是否可以从命令行调用groovy脚本方法?

时间:2014-04-04 07:54:50

标签: groovy

是否可以在不使用手动映射args [] - > method_to_call的情况下从命令行调用groovy脚本方法?

例如,如果我有一个groovy脚本'MyGroovyScript.groovy',如:

def foo() {

}

def bar() {

}

我想从命令行调用foo()方法,如:

groovy MyGroovyScript.groovy foo

2 个答案:

答案 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