2011-02-01 2 views
2

Je viens d'installer criterium, et je veux être en mesure de l'utiliser depuis le repl et d'autres projets. Comment puis-je étendre le classpath java afin que je puisse utiliser la bibliothèque installée de n'importe où?Clojure installer le projet et le mettre sur classpath

J'apprécierais des réponses qui peuvent fonctionner facilement sur tous les projets que je travaille à l'avenir. J'utilise le leiningen, et je suppose qu'il le ferait quand vous exécuterez lein install, mais soit je fais quelque chose de mal ou cela ne suffit pas.

Répondre

8

vous devez apprendre le maven de base (lein utilise maven sous le capot) et la mécanique de classpath java. Pour un bref aperçu:

maven stocke les dépendances dans un répertoire caché, .m2, dans votre dossier personnel. Parcourez le dossier et cela aura du sens. Lorsque vous exécutez lein install, le jar est placé dans ce dossier. Essayez de trouver celui que vous avez installé. Cependant, la plupart des dépendances que vous utiliserez seront sur un serveur comme des clojars, donc vous ne devriez pas avoir besoin de l'installer manuellement comme vous l'avez fait. par exemple, le critère est here.

Dans votre projet, vous devez ajouter un critère en tant que dépendance dans project.clj. Il ressemblera à quelque chose comme ceci:

(defproject your-project "0.1.5" :description "blah" 
    :dependencies [[org.clojure/clojure "1.2.0"] 
       [org.clojure/clojure-contrib "1.2.0"] 
       [criterium "0.0.1-SNAPSHOT"] 
       ] 
    :dev-dependencies 
    [[swank-clojure "1.2.1"]]) 

Maintenant pénétrez dans le dossier racine de votre projet et exécutez lein deps. Cela va télécharger les dépendances dans project.clj, et les mettre automatiquement dans .m2 et dans le dossier lib de votre projet. Pour démarrer une rempl avec la course de configuration classpath lein repl

Chaque projet qui utilise critérium aura besoin pour l'ajouter comme une dépendance dans son project.clj

5

Je vous remercie des réponses qui peuvent travailler facilement sur tous les projets Je travaille à l'avenir.

Malheureusement, cela est impossible sur la machine virtuelle Java; vous ne pouvez pas modifier le chemin de classe lors de l'exécution, il doit donc être calculé séparément pour chaque projet. Il n'y a pas de système à l'échelle classpath, bien que des outils tels que Leiningen et cljr peuvent fournir quelque chose de similaire dans certains contextes:

$ lein install swank-clojure 1.3.0-SNAPSHOT 

Cela installera Swank-clojure dans ~/.lein/plugins, ce qui rendra disponible sur tous les Les projets de Leiningen en tant que dev-dépendances le rendront disponible quand vous faites "lein repl" en dehors du contexte d'un projet, mais les choses qui sont des dépendances réelles des projets devront être placées dans le fichier project.clj de ce projet. Sinon, il serait facile de créer des projets qui fonctionnent sur votre machine mais qui ne sont pas répétables.

Questions connexes