6
votes

Comment exécuter un script groovy de mon application Grails?

Eh bien, il semble une tâche simple mais je n'ai pas réussi à le faire courir.

J'ai un script groovy qui fonctionne bien sous Windows Vista lorsque vous appelez à l'invite: P>

Error 500: java.io.IOException: Cannot run program "cd": CreateProcess error=2, The system cannot find the file specified


2 commentaires

Existe-t-il une raison spécifique qu'il doit s'agir d'un "script" groovy plutôt que d'une classe que vous pouvez appeler, car Bastianneu le suggère ci-dessous?


Oui. J'ai besoin que ce script groovy soit exécuté sans environnement greil.


5 Réponses :


2
votes

moyen le plus simple:

génère une classe groovy et placez-le dans votre dossier / src / groovy de votre projet GRAVES. Importer cette classe dans votre classe de domaine et utiliser les fonctions que vous avez définies.

Mes 2 cents ...


0 commentaires

5
votes

Si cela ne vous dérange pas de fonctionner de manière asynchrone (dans un processus distinct de la méthode de service), les éléments suivants doivent fonctionner en supposant que groovy code> est sur votre variable de chemin:

cmd = ['groovy.bat', 'C:\\tmp\\foo.groovy']
cmd.execute().text


3 commentaires

Salut. Merci pour votre réponse, mais cela jette exactement le même résultat. Par exemple def cmd = ['CD', 'D: / TEMP']; cmd.execute () => Le système ne peut pas trouver le fichier spécifié. Avez-vous une idée?


Merci beaucoup! De votre exemple, j'ai réussi à le faire fonctionner avec les backslashes pour le chemin et "groovy.bat" au lieu de Groovy. Et maintenant ça marche !! Merci. Une question: savez-vous pourquoi "groovy.bat" fonctionne mais pas "groovy" (alors que dans une commande invite les deux œuvres)?


Je suppose que c'est parce que dans une invite de commande ".bat" est reconnu comme type de fichier exécutable, mais au niveau du système d'exploitation, vous devez fournir le nom de fichier complet à moins que ce soit ".exe". Incidemment, sur Linux, vous pouvez utiliser des «grails» ou «greils.sh»





0
votes

Une autre décision Vous pouvez utiliser Groovyscriptengine par exemple:

fichier myscript.groovy: xxx

bootstrap.groovy: xxx


0 commentaires