5 votes

Quelle est la bonne façon de développer à la pl en utilisant groovy ?

Je travaille pour la première fois avec Groovy. Je suis habitué à Python et Clojure où j'ai pu faire la plupart de mon codage au REPL. J'essaie de faire la même chose avec Groovy, mais je ne suis pas sûr d'avoir trouvé une méthode qui corresponde.

Le plugin Groovy Eclipse propose quelques modes interactifs, mais aucun ne me convient.

La première méthode consiste à charger un script Groovy dans la console Groovy. La console m'apparaît comme un éditeur faible sans aucun des agréments d'Eclipse, comme la complétion de tabulation. Il y a quelques capacités d'introspection intéressantes, mais on n'a pas vraiment l'impression d'un développement interactif.

La seconde méthode permet de lancer un Groovy Shell dans l'onglet console d'Eclipse. Cela me donne le REPL que je veux, mais il semble vraiment maladroit de l'exécuter dans Eclipse. Il n'y a pas de complétion de tabulation. Et je dois taper "go" après avoir entré le code que je veux qu'il évalue.

Le plugin Groovy Eclipse n'était pas suffisant, mais le shell Groovy inclus dans la distribution autonome de Groovy fonctionne très bien. Il complète les tabulations (sauf pour les noms de classe) et évalue le code juste après l'avoir saisi. C'est celui qui a documenté aquí .

J'ai creusé un peu plus les différences entre le REPL qui fonctionne dans Eclipse et celui qui fonctionne à partir de la distribution autonome en utilisant la commande groovysh script. Celui d'Eclipse est une instance de 'groovy.ui.InteractiveShell' et celui de la groovysh script est une instance de 'org.codehaus.groovy.tools.shell.Main' . Et j'ai trouvé le code suivant dans le groovysh script

if [ "x$OLDSHELL" != "x" ]; then </br>
    startGroovy groovy.ui.InteractiveShell "$@"
else
    startGroovy org.codehaus.groovy.tools.shell.Main "$@"
fi

Le code ci-dessus et ce fil Dites-moi que groovy.ui.InteractiveShell va disparaître.

Peut-être est-il prévu d'intégrer plus étroitement le nouveau shell dans Eclipse à l'avenir ?

Quoi qu'il en soit, j'ai réussi à pirater le système pour pouvoir appeler la fonction groovysh script avec les classpaths nécessaires pour travailler avec le code de mon projet Eclipse. Maintenant, je peux développer joyeusement au niveau de la REPL. Mais c'est compliqué et j'utilise les jars de la distribution Groovy stand-alone pour démarrer Groovy au lieu de ceux utilisés dans mon projet Eclipse. Je me dis qu'il y a peut-être une meilleure solution.

Quelqu'un a-t-il trouvé un bon moyen d'intégrer le REPL qui se lance à partir de la commande groovysh script et un projet dans Eclipse. Ou avez-vous trouvé une meilleure façon de développer avec un REPL Groovy ?

2voto

Andrew Eisenberg Points 12522

Peu d'efforts ont été faits pour intégrer groovysh dans groovy-eclipse. La raison principale est que groovysh utilise toutes sortes de caractères non affichés pour spécifier des choses comme la couleur, la complétion et le placement du caret. La console Eclipse ne gère pas ces caractères et les rejette comme des déchets. De plus, l'implémentation actuelle de l'interpréteur de commandes de Groovy ne fonctionne pas très bien sous Windows lorsqu'il se trouve dans Eclipse. Il y a quelques incompatibilités avec la bibliothèque jline.

Si nous devions procéder à une intégration avec groovysh, il s'agirait d'une entreprise de grande envergure et d'une réécriture importante. Je ne suis pas contre l'idée de faire quelque chose comme ça, mais jusqu'à présent personne n'a demandé cette fonctionnalité (vous êtes le premier à ma connaissance).

Qu'y a-t-il de mal à exécuter groovysh à partir de la ligne de commande pendant que vous travaillez dans Eclipse ? (Ce n'est pas une question rhétorique, je veux vraiment savoir quelles sont les fonctionnalités manquantes). C'est la technique que la plupart des développeurs Groovy utilisent lorsqu'ils travaillent dans Eclipse.

0voto

harishtella Points 138

J'ai trouvé un bon moyen de lancer groovysh dans ITerm avec un classpath personnalisé depuis Eclipse. Il est spécifique à OSX et ITerm, mais vous pourriez le modifier pour appeler un shell différent en fonction de la façon dont vous passez une chaîne au shell pour qu'il l'exécute.


Mettre en place un outil externe dans Eclipse qui appelle un script. Le script utilise les commandes applescript d'ITerm pour ouvrir une nouvelle fenêtre ITerm et exécuter la commande transmise.

Le texte de la boîte d'arguments dans l'image ci-dessous :

"cd ${projet_loc} && /Users/harishtella/Developer/groovy/groovy-1.8.6/bin/groovysh -cp ${projet_loc}/bin:${projet_loc}/src:${projet_loc}/lib/*:${projet_loc}/test"

La variable ${project_loc} est disponible lors de la définition de nouveaux outils externes. Voir cette pour plus d'informations.

enter image description here

Veillez à décocher la case "allouer la console" dans l'onglet "Commun".

enter image description here

Voici le corps du script "iterm-with-command" script.

#!/bin/sh
# open a new iterm window and runs all the arguments passed in as a command
# in iterm
osascript <<-eof
tell application "iTerm"
    set myterm to (make new terminal)
tell myterm
    launch session "Default session"
        tell the last session
            set name to "console"
            write text "$@"
end tell
end tell
end tell
eof

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X