2009-08-07 14 views
8

Có thư viện getopts tiêu chuẩn hoặc được đề nghị cho Groovy sẽ cho phép tôi nhanh chóng xử lý các tranh luận dòng lệnh dài và ngắn trong Groovy không?GetOpts cho Groovy?

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

Trả lời

15

Bạn cũng có thể sử dụng Groovy CliBuilder (sử dụng nội bộ Apache Commons Cli).

Bạn sẽ tìm thấy một ví dụ tốt về cách thức hoạt động ở đây =>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

Một trong những thế mạnh lớn của Groovy là khả năng tương tác với Java. Do đó, khi tìm kiếm các thư viện để sử dụng trong Groovy, bản năng đầu tiên của tôi là tìm kiếm các thư viện Java hiện có.

Args4j là một thư viện ngắn gọn và thanh lịch để phân tích các tùy chọn dòng lệnh nó hoạt động hoàn hảo với các lớp Groovy. Tôi đã viết lại các phần của tutorial để làm việc với Groovy.

Hãy xem xét các lớp Groovy sau:

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) 
     } 
} 

Biên dịch nó với:

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

và chạy nó với

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 

Để nhận được đầu ra

Business-Logic 
-name: sample 
0

Apache Commons CLI là một thư viện Java khác mà bạn có thể sử dụng trong Groovy

1

Ngày xửa ngày xưa tôi đã viết Groovy Option Parser để hoàn thành nhiệm vụ này. Nó khá thẳng về phía trước và có một số niceties.