2014-10-20 2 views
3

С Groovy's CliBuilder можно указать несколько аргументов, как описано, например. здесь:Groovy CliBuilder несколько аргументов без запятых

Пример из приведенной выше ссылке:

def cli = new CliBuilder( 
    usage: 'findClassesInJars.groovy -d <root_directories> -s <strings_to_search_for>', 
    header: '\nAvailable options (use -h for help):\n', 
    footer: '\nInformation provided via above options is used to generate printed string.\n') 
import org.apache.commons.cli.Option 
cli.with 
{ 
    h(longOpt: 'help', 'Help', args: 0, required: false) 
    d(longOpt: 'directories', 'Two arguments, separated by a comma', args: Option.UNLIMITED_VALUES, valueSeparator: ',', required: true) 
    s(longOpt: 'strings', 'Strings (class names) to search for in JARs', args: Option.UNLIMITED_VALUES, valueSeparator: ',', required: true) 
} 

Однако, это означает, что сценарий должен быть назван так:

groovy script.groovy -d folder1,folder2,folder3 

вместо тем более обычным (по крайней мере, в мире Unix):

groovy script.groovy -d folder1 -d folder2 -d folder3 

Есть ли способ заставить его работать, как во втором примере?

+0

Скорее нет. Просто глупая идея: вы пытались установить разделитель как '-d'? – Opal

+0

Да, просто оставьте значениеSeparator. –

ответ

0

Да, добавьте букву 's' к имени аргумента. Это, по соглашению, вернет ArrayList, который вы можете выполнить, чтобы получить доступ ко всем значениям.

println "The first directory value: ${option.d}" 
println "The directories as a list ${option.ds}" 
options.ds.each{ it-> 
    println "directory: ${it}" 
}