Groovy的GetOpts?

时间:2009-08-07 16:52:28

标签: groovy

是否有一个针对Groovy的标准或推荐的getopts库,这将允许我在Groovy中快速处理长和短的命令行争论?

groovy foo.groovy --fname = foo.txt --output = foo.html --verbose

4 个答案:

答案 0 :(得分:15)

您也可以简单地使用Groovy CliBuilder(内部使用Apache Commons Cli)。

你会在这里找到一个很好的例子吗?> http://www.reverttoconsole.com/blog/codesnippets/groovy-clibuilder-in-practice/

def cli = new CliBuilder()
cli.with {
     usage: 'Self'
     h longOpt:'help', 'usage information'
     i longOpt:'input', 'input file', args:1
     o longOpt:'output', 'output file',args:1
     a longOpt:'action', 'action to invoke',args:1
     d longOpt:'directory','process all files of directory', args:1
}
def opt = cli.parse(args)
def action
if( args.length == 0) {
    cli.usage()
    return
}
if( opt.h ) {
    cli.usage()
    return
}
if( opt.i ) {
input = opt.i
}
...

答案 1 :(得分:3)

Groovy的主要优势之一是与Java的互操作性。因此,在寻找在Groovy中使用的库时,我的第一直觉就是寻找现有的Java库。

Args4j是一个简洁而优雅的库,用于解析命令行选项,它与Groovy类完美配合。我已经重写了部分tutorial以使用Groovy。

考虑以下Groovy类:

import org.kohsuke.args4j.Option;

class Business {

        @Option(name="-name",usage="Sets a name")
        String name

        public void run() {

                println("Business-Logic")
                println("-name: " + name)
        }
}

用以下内容编译:

groovyc -classpath .:args4j-2.0.12/args4j-2.0.12.jar Business.groovy

并使用

运行它
java -cp .:args4j-2.0.12/args4j-2.0.12.jar:/usr/share/java/groovy/embeddable/groovy-all-1.6.4.jar -Dmainclass=Business org.kohsuke.args4j.Starter -name sample

获取输出

Business-Logic
-name: sample

答案 2 :(得分:1)

曾几何时我写了Groovy Option Parser来完成这项任务。这很直接,并且有一些细节。

答案 3 :(得分:0)

Apache Commons CLI是另一个可以在Groovy中使用的Java库