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?

57
demandé sur Only Bolivian Here 2011-10-05 07:51:22

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.

54
répondu metasoarous 2016-10-04 22:53:30

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

52
répondu Alex Ott 2011-10-05 08:49:55

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*) 
10
répondu finiterecursion 2017-08-23 14:10:47

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
7
répondu Hamza Yerlikaya 2011-10-05 04:14:07

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.

1
répondu duncsoz 2017-05-23 12:10:08

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

1
répondu Will Munn 2016-09-18 13:12:55

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.

0
répondu Arindam Nayak 2016-08-02 10:29:41

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")
0
répondu Shaik Mahaboob Johny 2018-07-09 08:11:53