run repl lein bridal clojure leiningen

clojure - repl - ¿Cómo puedo configurar leiningen para trabajar con múltiples proyectos?



lein repl (2)

¿ Ayuda esta pregunta de las preguntas frecuentes de Lein ?

P : Quiero hackear dos proyectos en paralelo, pero es molesto cambiar entre ellos.

R : Utilice una función llamada dependencias de pago. Si creas un directorio llamado checkouts en la raíz de tu proyecto y vinculas otras raíces de proyecto, Leiningen te permitirá piratearlos en paralelo. Eso significa que los cambios en la dependencia serán visibles en el proyecto principal sin tener que pasar por todo el ciclo de instalación / switch-projects / deps / restart-repl. Tenga en cuenta que esto no es un reemplazo para listar el proyecto en: dependencias; simplemente complementa eso para ciclos de cambio más ajustados.

Tengo múltiples proyectos de Leiningen separados que aparentemente podrían depender uno del otro

Ejemplo:

~/projects/mywebapp (my own project) ~/projects/noir (a clone of the github repo) ~/projects/clojureql (a clone of the github repo)

Quiero tenerlos todos compilados en la misma JVM al mismo tiempo. Me gustaría ejecutar el sangrado de los repositorios de git (extraer nuevas confirmaciones / hacer mis propias confirmaciones) y no tener que ejecutar los archivos jar o lein y, por supuesto, no tengo que reiniciar la VM si cambio alguno de los proyectos.

Aquí hay un caso de uso:

Después de ejecutar lein swank, desde dentro de emacs, me conecto a la respuesta y compilo un archivo de mywebapp (con Cck), que requiere un archivo de noir. Encuentra la versión del archivo en mi directorio de proyectos. Más tarde, abro ese archivo, lo edito y lo compilo (con Cck).

Tenga en cuenta que no estoy pidiendo la compilación automática cuando hago git pull. Simplemente no quiero tener que reiniciar la JVM o hacer largos procesos de compilación de archivos jar.

¿Es esto posible en leiningen? ¿Cómo puedo configurar esto?


Si ya está usando swank, no necesita dependencias de pago de lein. Puede simplemente hacer Cc Ck en su proyecto (que cargará las versiones marcadas de noir / lo que sea), y luego buscar su versión local de noir y Cc Ck también. ¡Swank felizmente envía todo el código a tu respuesta, y el JVM nunca necesita saber que vino de un lugar diferente!

Sin embargo, solo puedo recomendar esto para pequeños cambios, porque creo que si compilas noir.core, que depende de (decir) noir.internal, clojure cargará la versión de jarred de noir.internal incluso mientras compilas la versión local de noir. núcleo. Aun así, es un truco muy útil en general.