2009-08-07 7 views
8

क्या ग्रोवी के लिए मानक या अनुशंसित गेटोपेट लाइब्रेरी है जो मुझे ग्रोवी में लंबी और छोटी कमांड लाइन बहस को तुरंत संसाधित करने की अनुमति देगी?ग्रोवी के लिए GetOpts?

ग्रूवी foo.groovy --fname = foo.txt --output = foo.html --verbose

उत्तर

15

में इस्तेमाल कर सकते हैं आप आसानी ग्रूवी CliBuilder (जो आंतरिक रूप से अपाचे कॉमन्स Cli उपयोग करता है) इस्तेमाल कर सकते हैं एक और जावा पुस्तकालय है।

आप का एक अच्छा उदाहरण मिल जाएगा कि यह कैसे यहाँ एक बार मैं Groovy Option Parser लिखा था इस कार्य को पूरा करने पर एक बार काम करता है =>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 
} 
... 
3

ग्रूवी के प्रमुख शक्तियों में से एक जावा के साथ अंतर है। इसलिए, ग्रोवी में उपयोग करने के लिए पुस्तकालयों की तलाश करते समय, मेरी पहली प्रवृत्ति मौजूदा जावा पुस्तकालयों को देखना है।

Args4j आदेश पंक्ति विकल्प और यह ग्रूवी वर्गों के साथ पूरी तरह से काम करता है पार्स करने के लिए एक संक्षिप्त और सुरुचिपूर्ण पुस्तकालय है। मैंने ग्रोवी के साथ काम करने के लिए tutorial के कुछ हिस्सों को फिर से लिखा है।

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 
प्राप्त करने के लिए

निम्नलिखित ग्रूवी वर्ग पर विचार करें

1

। यह बहुत सीधे आगे है और कुछ niceties है।