2011-10-10 8 views
5

¿Es posible descargar e instalar dependencias Maven no especificadas anteriormente en un ejecutando Clojure REPL?Carga de forma dinámica dependencias en Clojure REPL

Estoy pensando en el caso bastante común en el que desea rápidamente establecer temporalmente una dependencia para algunas herramientas de prueba o visualización, pero no desea cerrar su sesión REPL actual.

Por ejemplo, si desea para tirar en embrujamiento para dibujar algunos gráficos bonitos de datos en su sesión de REPL actual, se usa algo como lo siguiente:

(load-dependency "incanter" "incanter" "1.3.0-SNAPSHOT") 

;; now do stuff with Incanter...... 

Es de suponer que tendría que activar el resoltion dependencia/cargando en Maven o Leiningen desde un repositorio apropiado pero no sé lo suficiente sobre sus componentes internos para saber si esto es posible o no en tiempo de ejecución .....

Respuesta

6

El comportamiento del cargador de clases predeterminado de Java hace esto difícil, pero pomegrenade (actually, pomegranate) afirmaciones para poder hacer lo que quieras

+0

impresionante - ¡esto parece que encaja perfectamente! Curiosamente, el ejemplo de Incanter es el mismo que el utilizado en la documentación de pomegrenade :-) – mikera

+0

@mikera. Tuviste suerte, esta biblioteca fue lanzada hace 5 días http://disclojure.org/2011/10/05/today -in-the-intertweets-oct-5th-ed-3 /. – ponzao

+0

Observé que la URL está escrita correctamente (granada), pero el enlace es un pomegrenade bastante cómico. Me pregunto, ¿es esto una especie de broma rara orientada a granadas que no estoy recibiendo? – amalloy

5

Alembic es un complemento leiningen que agrega esta funcionalidad a la réplica.

cita directa del README:

Alambique es una biblioteca clojure que le permite destilar frascos en su ruta de clase en una instancia de JVM en ejecución. Puede usarlo para agregar dependencias a un REPL en ejecución, ya sea de forma ad-hoc o recargando su archivo project.clj.

También agrega una función que analiza el (load-project)project.clj y añade dependencias faltantes sobre la marcha.

Cuestiones relacionadas