Как захватить аргументы, переданные в сценарий Groovy?
Я только начинаю с Groovy. Я не мог найти никаких примеров того, как обрабатывать аргументы в Groovy script, и поэтому я сам взломал этот метод. Там должен быть лучший способ сделать это? Если это так, я ищу этот лучший способ, так как я, вероятно, упускаю из виду очевидное.
import groovy.lang.Binding;
Binding binding = new Binding();
int x = 1
for (a in this.args) {
println("arg$x: " + a)
binding.setProperty("arg$x", a);
x=x+1
}
println binding.getProperty("arg1")
println binding.getProperty("arg2")
println binding.getProperty("arg3")
5 ответов:
Если вы хотите более продвинутый разбор, чем просто получение аргументов, вы можете использовать Groovy CliBuilder, чтобы помочь вам. Это поможет вам с флагами командной строки, необязательными аргументами и печатью инструкции по использованию.
оформить заказ CliBuilder ' S Javadoc или MrHakis post об этом.
Это очень похоже на Java, и вы можете использовать тот же синтаксис java. Например.
class TestExecutor { public static void main(def args) { println("Printing arguments"); for(String arguments : args) { println (arguments); } } }
запустите его, и вы должны увидеть аргументы напечатаны
C:\Users\athakur\Desktop>groovy TestExecutor.groovy test1 test2 test3 Aug 16, 2014 11:47:56 AM org.codehaus.groovy.runtime.m12n.MetaInfExtensionModule newModule WARNING: Module [groovy-nio] - Unable to load extension class [org.codehaus.groo vy.runtime.NioGroovyMethods] Printing arguments test1 test2 test3
также обратите внимание, если вы не предоставляете основной метод или предоставить один, как в приведенном выше примере, то вы можете получить аргументы как
args[i]
но вы можете изменить имя массива (опять же как Java). Так что вы можете иметь что-то вроде -public static void main(def argsNew) { println("Printing arguments"); for(String arguments : argsNew) { //using args in above for loop will throw error println (arguments); } }
дело в том, что это не то, что жестко закодировано. Наконец, как предложенный в другом ответе вы всегда можете использовать CliBuilder для интеллектуального разбора. Но опять же в том, что тоже он внутренне использовал
def options = cli.parse(args)
.