是否有一个针对Groovy的标准或推荐的getopts库,这将允许我在Groovy中快速处理长和短的命令行争论?
groovy foo.groovy --fname = foo.txt --output = foo.html --verbose
答案 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库