Comment puis-je lancer un.clj Clojure fichier que j'ai créé?
J'ai installé Geany sur ma machine Linux Mint et j'ai écrit du code simple. Juste un petit hello world pour commencer avec la langue.
maintenant j'aimerais l'exécuter et voir ce qu'il produit.
Comment puis-je lancer 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?
8 réponses
avec clojure
Je n'arrive pas à croire que personne ne l'ait encore suggéré. Vous devriez être en mesure de faire de
clojure path/to/script.clj
cela fonctionne en utilisant le clojure installé sur Ubuntu avec apt-get. Pas sûr pour les autres installations...
avec lein-exec
cependant, si le script sur lequel vous travaillez a des dépendances ou , je recommande le lein-exec
plugin . Cela a l'avantage de vous permettre d'utiliser Leiningen pour gérer toutes les dépendances, ce qui est doux. Leiningen a déjà une commande lein run
, mais il ne fonctionne que pour l'exécution des fonctions principales dans le cadre d'un Full Clojure/lein project . Le plugin lein-exec
est donc un très bon complément pour les scripts à petite échelle.
Détails De La Dépendance...
Note: pour des raisons de rigueur, si vous utilisez lein, vous pouvez ajouter toutes les bibliothèques que vous souhaitez utiliser à un fichier ~/.lein/profiles.clj
, ou à votre fichier project.clj
si vous travaillez dans un projet. Ensuite, lorsque vous lancez lein deps
, toutes les dépendances seront installées et accessibles dans vos scripts/projets en utilisant lein exec
/ lein run
. De plus, lein repl
vous donne une réponse Clojure avec accès à ces dépendances. Encore une fois, certainement le chemin à suivre si vous avez des dépendances de bibliothèque.
dans les deux cas, envisagez d'utiliser drip
pour un démarrage plus rapide
Drip est un petit outil soigné qui vous fournit une image JVM pré-amorçée prêt à lancer. Cela peut être utile pour réduire les délais de lancement des applications JVM. Clojure peut prendre un certain temps pour démarrer lui-même, donc drip est un outil agréable 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 de courir rapidement. Si vous utilisez leiningen, regardez le plugin lein-drip .
Pour ClojureScript
je recommande http://planck-repl.org / . Il supporte maintenant (bootstrapped) le lancement rapide de scripts ClojureScript sans avoir à démarrer la JVM ou Clojure. Pour la plupart des tâches de script, l'exécution rapide est importante, donc quand vous n'avez besoin de rien spécifique à la JVM, c'est mon n ° 1 de la recommandation.
vous pouvez lancer script avec la commande suivante:
java -cp clojure.jar clojure.main file.clj
mais il est préférable d'utiliser leiningen , surtout quand vous commencez à ajouter des dépendances à votre projet. lein fournit le nombre de commandes pour exécuter votre code (avec toutes les dépendances nécessaires), empaqueter le code dans l'archive avec lein jar
, ou créer des archives complètes et indépendantes avec lein uberjar
que vous pouvez exécuter avec:
java -jar your_app.jar
commande
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 , en lançant le .le fichier clj que vous avez créé est aussi simple que
lein exec hello.clj
dans le cas où 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
vers le haut du fichier et le rendre exécutable ou vous pouvez utiliser leiningen qui est un outil de construction de clojure il va créer un seul bocal qui a tout emballé, alors vous pouvez juste faire,
java -jar cool_app.jar
Drip est probablement maintenant la meilleure réponse à cette question (voir drip's wiki pour plus de détails sur L'utilisation de Drip avec Clojure).
Cake a été incorporé dans Leiningen et a depuis été remplacé comme la mise en œuvre 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 raccorder à la répl comme:
cat $PATH_TO_FILE | lein repl
j'ai eu le même problème en exécutant un fichier de script clojure spécifique à partir d'un projet clojure en utilisant lein
. Puis j'ai trouvé un raccourci, j'ai pensé partager la même chose.
dans le fichier project.clj
, vous pouvez basculer le nom du fichier script clojure ( qui a la méthode principale bien sûr). La déclaration suivante pour cette.
:main ^:skip-aot conv.newconv
; here conv is namespace and newconv is the file name
.
Note: je suis nouveau à clojure et je ne suis pas sûr pourquoi '^:skip-aot " est utilisé, je n'ai pas vérifié.
Note: cette méthodologie, ne nécessite pas d'installation de plugin ni de génération de fichier jar. Cela nécessite seulement de changer un nom dans le dossier de projet.
hypothèse: votre projet clojure a plusieurs fichiers clojure, chacun ayant la méthode principale. Je suis en supposant que c'est créé pour fins de test uniquement. Ma solution pour ce scénario spécifique.
pour exécuter un seul fichier en ligne de commande utilisez les commandes suivantes:
clj -m (NameSpace name)
ex: clj -m Sample
ou si vous voulez passer par repl:
(load-file filelocation)
ex:
(load-file "Sample.clj")