2012-07-25 11 views
11

Así que tengo este problema de flujo de trabajo:¿Cómo pueden las nuevas bibliotecas clojure ser cargado en la repl

estoy feliz escribiendo en mi proyecto clojure repl y darse cuenta de que necesito otra biblioteca que no está en mi project.clj, di en este caso, necesitaba la biblioteca tools.cli.

que se abren project.clj en mi editor y agregar en una entrada a la :dependencies

 [org.clojure/tools.cli "0.2.1"] 

Entonces, dentro del directorio del proyecto, tipo I lein deps en la cáscara para tirar en las bibliotecas necesarias

Después las dependencias del proyecto se extraen, técnicamente todos los archivos de clase ya están listos para ser cargados, pero si vuelvo a mi respuesta y escribo:

> (use 'tools.cli) 

me sale esto:

=>> FileNotFoundException Could not locate tools/cli__init.class 
    or tools/cli.clj on classpath: clojure.lang.RT.load (RT.java:432) 

así que tendría que reiniciar mi repl, desperdiciando un montón entero de tiempo volver a configurar el estado de la repl a donde estaba antes de que necesitaba la biblioteca.

¿Hay alguna forma de cargar la biblioteca dinámicamente? por ejemplo, después de ejecutar lein deps acabo de volver a la repl y tipo:

> (load-library "tools.cli") 
> (use 'tools.cli) 

Gracias de antemano

+2

Ver http://stackoverflow.com/questions/11327624/load-a-new-dependency-in-slime/ – georgek

+0

gran . eso lo resolvió – zcaudate

Respuesta

7

granada es para usted:

https://github.com/cemerick/pomegranate

Se admite la descarga y la adición de nuevas dependencias en tiempo de ejecución, por ejemplo:

(add-dependencies :coordinates '[[incanter "1.2.3"]] 
        :repositories (merge cemerick.pomegranate.aether/maven-central 
             {"clojars" "http://clojars.org/repo"})) 
0

puede probar una biblioteca el repl usando lein-try.

~/.lein/profiles.clj:

{:user {:plugins [[lein-try "0.4.3"]]}}

command line:

$ lein try clj-time "0.5.1" 
Fetching dependencies... (takes a while the first time) 
lein-try loaded [clj-time "0.5.1"] 

nREPL server started on port 57036 
REPL-y 0.2.0 
Clojure 1.5.1 
    Docs: (doc function-name-here) 
      (find-doc "part-of-name-here") 
    Source: (source function-name-here) 
Javadoc: (javadoc java-object-or-class-here) 
    Exit: Control+D or (exit) or (quit) 

user=> 
Cuestiones relacionadas