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

XZe*_*Zen 3 groovy

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

例如,如果我有 groovy 脚本“MyGroovyScript.groovy”,例如:

def foo() {

}

def bar() {

}
Run Code Online (Sandbox Code Playgroud)

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

groovy MyGroovyScript.groovy foo
Run Code Online (Sandbox Code Playgroud)

tim*_*tes 5

我相信你能得到的最接近的是:

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() )
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,然后运行以下命令会给出以下输出:

$ 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
Run Code Online (Sandbox Code Playgroud)