Comment capturer des arguments transmis à un script Groovy?

Je viens de commencer avec Groovy. Je n’ai trouvé aucun exemple sur la façon de gérer les arguments d’un script Groovy et j’ai donc piraté cette méthode moi-même. Il doit y avoir une meilleure façon de le faire? Si oui, je cherche cette meilleure façon, car je suis probablement en train de négliger l’évidence.

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

Si vous souhaitez un traitement plus avancé que l’obtention des arguments, vous pouvez utiliser le Groovy CliBuilder pour vous aider. Il vous aide avec les indicateurs de ligne de commande, les arguments facultatifs et l’impression de l’instruction d’utilisation.

Vérifiez la publication Javadoc ou MrHakis de CliBuilder à ce sujet.

Désolé de poser la question. Je viens de le comprendre:

 println args[0] println args[1] println args[2] 

Le plus simple est d’utiliser this.args comme un tableau, par exemple:

test.groovy

 println this.args[0] 

Appel:

 C:>groovy test this 

Sortie:

 this 

Il est très similaire à Java et vous pouvez utiliser la même syntaxe Java. Par exemple

 class TestExecutor { public static void main(def args) { println("Printing arguments"); for(Ssortingng arguments : args) { println (arguments); } } } 

Exécutez-le et vous devriez voir les arguments imprimés

 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 

Notez également que si vous ne fournissez pas de méthode principale ou que vous en fournissez une comme dans l’exemple ci-dessus, vous pouvez obtenir des arguments sous la forme args[i] mais vous pouvez changer le nom du tableau (comme java). Donc, vous pouvez avoir quelque chose comme –

 public static void main(def argsNew) { println("Printing arguments"); for(Ssortingng arguments : argsNew) { //using args in above for loop will throw error println (arguments); } } 

Le point étant que ce n’est pas quelque chose qui est codé en dur. Enfin, comme suggéré dans d’autres réponses, vous pouvez toujours utiliser CliBuilder pour une parsing intelligente. Mais là encore, elle utilisait en interne def options = cli.parse(args) .

essaye ça:

 args.each{println it}