J'ai installé Geany sur ma machine Linux Mint et j'ai écrit du code simple. Juste un petit bonjour pour commencer avec la langue.
Maintenant, je voudrais l'exécuter et voir ce qu'il produit.
Comment puis-je exécuter ce code? Je n'utilise pas un IDE ou quelque chose qui est préemballé, juste le simple éditeur de texte Geany.
Quelle commande dois-je exécuter?
clojure
Je ne peux pas croire que personne ne l'ait encore suggéré. Vous devriez pouvoir faire
clojure path/to/script.clj
Cela fonctionne en utilisant le clojure installé sur Ubuntu avec apt-get. Pas sûr des autres installations ...
lein-exec
Cependant, si le script sur lequel vous travaillez a des dépendances , je recommanderais lein-exec
plugin . Cela a l'avantage de vous permettre d'utiliser Leiningen pour gérer toutes les dépendances, ce qui est agréable. Leiningen a déjà a lein run
, mais elle ne fonctionne que pour l'exécution des fonctions principales dans un projet Clojure/lein complet . Alors le lein-exec
le plugin est un très bon complément pour les scripts à petite échelle.
Remarque: Par souci de rigueur, si vous utilisez lein, vous pouvez ajouter toutes les bibliothèques que vous souhaitez utiliser à un ~/.lein/profiles.clj
fichier, ou à votre project.clj
fichier si vous travaillez dans un projet. Ensuite, lorsque vous exécutez lein deps
toutes les dépendances seront installées et accessibles dans vos scripts/projets lors de l'utilisation de lein exec
/lein run
. Aditionellement, lein repl
vous donne une réponse Clojure avec accès à ces dépendances. Encore une fois, certainement la voie à suivre si vous avez des dépendances de bibliothèque.
drip
pour une heure de démarrage plus rapideDrip est un petit outil soigné qui vous fournit une image JVM pré-amorcée prête à être lancée. Cela peut être utile pour réduire les délais de lancement des applications JVM. Clojure peut prendre un certain temps à bootstrap lui-même, donc le goutte à goutte est un bel outil pour aider à accélérer ce processus. C'est particulièrement le cas lorsque vous écrivez de petits scripts, avec lesquels il y a généralement une attente d'exécution rapide. Si vous utilisez leiningen, jetez un œil au plugin lein-drip .
Je recommanderais http://planck-repl.org/ . Il prend désormais en charge le lancement rapide (amorcé) des scripts ClojureScript sans avoir à lancer la JVM ou Clojure. Pour la plupart des tâches de script, une exécution rapide est importante, donc lorsque vous n'avez besoin de rien de spécifique à la JVM, c'est ma recommandation n ° 1.
Vous pouvez exécuter le script avec la commande suivante:
Java -cp clojure.jar clojure.main file.clj
mais il vaut mieux utiliser leiningen , surtout quand vous commencerez à ajouter des dépendances à votre projet. lein fournit un certain nombre de commandes pour exécuter votre code (avec toutes les dépendances nécessaires), pack de code dans l'archive avec lein jar
, ou créez des archives complètes et indépendantes avec lein uberjar
avec lequel vous pouvez exécuter:
Java -jar your_app.jar
commander
P.S. Vous pouvez lire comment utiliser lein
dans article suivant - il décrit les tâches de base et les configurations
Une fois que vous avez installé lein et le plugin lein-exec , exécuter le fichier .clj que vous avez créé est aussi simple que
lein exec hello.clj
Si vous passez des arguments de ligne de commande comme
lein exec hello.clj arg1 arg2 arg3
vous pouvez y accéder dans la fonction 'foo' de votre hello.clj comme
(foo *command-line-args*)
Pour un seul fichier clj, vous pouvez ajouter,
#!/usr/bin/env Java -cp /path/to/clojure-1.2.0.jar clojure.main
en haut du fichier et le rendre exécutable ou vous pouvez utiliser leiningen qui est un outil de construction de clojure, il créera un seul pot qui a tout emballé, alors vous pouvez simplement le faire,
Java -jar cool_app.jar
Drip est probablement maintenant la meilleure réponse à cette question (voir wiki de Drip pour plus de détails sur l'utilisation de Drip avec Clojure).
Cake a été intégré à Leiningen et a depuis été remplacé comme l'implémentation la plus stable de l'automatisation Clojure par Drip - voir cette réponse à une question similaire ici.
si vous voulez juste exécuter un seul fichier, que diriez-vous de le rediriger vers le repl comme:
cat $PATH_TO_FILE | lein repl
J'ai rencontré un problème similaire lors de l'exécution d'un fichier de script clojure spécifique à partir d'un projet clojure à l'aide de lein
. Puis j'ai trouvé un raccourci, pensé à le partager.
Dans project.clj
fichier, vous pouvez basculer le nom du fichier de script clojure (qui a bien sûr la méthode principale). Voici la déclaration pour cela.
:main ^:skip-aot conv.newconv
; here conv is namespace and newconv is the file name
.
Remarque: Je suis novice en matière de clojure et je ne sais pas pourquoi '^: skip-aot` est utilisé, je n'ai pas vérifié cela.
Remarque: Cette méthodologie, ne nécessite aucun plugin à installer ni aucun bocal le fichier doit être généré. Cela ne nécessite que de changer un nom dans le fichier de projet.
Hypothèse: Votre projet clojure a plusieurs fichiers clojure, chacun ayant sa méthode principale. Je suppose que cela est créé à des fins de test uniquement. Ma solution fonctionnera pour ce scénario spécifique.
Pour exécuter un seul fichier via la ligne de commande, utilisez les commandes suivantes:
clj -m (NameSpace name)
ex: clj -m Sample
Ou si vous souhaitez exécuter repl:
(load-file filelocation)
ex:
(load-file "Sample.clj")