git clojure github dependency-management leiningen

clojure y leiningen-usando un repositorio git como dependencia



github dependency-management (3)

Respuesta para 2017: use lein-voom

Puede usar lein-voom para extraer y crear dependencias de proyecto desde GitHub u otros repositorios de Git. Funciona permitiéndole anotar sus entradas de par de vectores de dependencia con metadatos específicos de voom . Aquí hay un ejemplo del archivo README:

^{:voom {:repo "https://github.com/ring-clojure/ring" :branch "1.3"}} [ring/ring-core "1.3.0-RC1-20140519_142204-gaf0379b"]

El principal caso de uso dado para Voom es permitir que los equipos que mantienen múltiples proyectos Clojure en repositorios separados de Git dependan fácilmente de la versión actual de uno o más de los proyectos de otra sin tener que implementar constantemente lanzamientos de instantáneas de desarrollo.

Prefiero lein-voom sobre lein-git-deps (el complemento recomendado en la respuesta previamente aceptada de 2012) por varias razones:

  1. El hecho de que la especificación se proporcione a través de metadatos hace que este complemento sea más flexible y fácilmente extensible. Ya tiene una opción para especificar una rama / etiqueta específica del repositorio. Puede agregar otros pares de clave / valor al mapa para obtener un control de grano fino adicional sin demasiado trabajo.

  2. Simplemente puede eliminar los metadatos de su entrada de dependencia para versiones estables; es decir, no hay necesidad de mover las entradas / refactorizar su project.clj una vez que su dependencia pasa de GitHub a Clojars.

  3. En el momento de escribir este documento (noviembre de 2017), lein-voom se ha actualizado en los últimos meses, mientras que lein-git-deps se ha estancado durante 4 años.

¿Es posible hacer que leiningen saque un proyecto directamente de un repositorio git (en github) como una dependencia?

Al usar Bundler con Ruby, es posible asignar una gema a un repositorio de git, lo que permite un desarrollo rápido e integración de proyectos dependientes.

Actualizar

Según la respuesta aceptada, ahora hay un complemento de leiningen para administrar git-deps: https://github.com/tobyhede/lein-git-deps


Acabo de encontrar esto en el proyecto de clojurescriptone.clj

Creo que puede ser útil para ti:

:git-dependencies [["https://github.com/clojure/clojurescript.git" "886d8dc81812962d30a741d6d05ce9d90975160f"] ["https://github.com/levand/domina.git" "8933b2d12c44832c9bfaecf457a1bc5db251a774"]]

El archivo está here .


Leiningen no hará nada por ti (edítelo: no de la caja, de todos modos, seguir el ejemplo de la respuesta de Sunng lo lleva a descubrir que se ha escrito un complemento para esto; ver también mi comentario sobre esa respuesta; seguir siendo una buena solución incorporada) , pero puede hacer que los checkouts de otros proyectos se ejecuten en el classpath. Esta funcionalidad se describe en la sección de preguntas frecuentes del README; aquí están las preguntas y respuestas relevantes:

P: Quiero piratear dos proyectos en paralelo, pero es molesto cambiar de uno a otro.
R: Si creas un directorio llamado checkouts en tu raíz de proyecto y enlazas otras raíces de proyecto, Leiningen te permitirá hackearlos 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 / cambio-proyectos / deps / restart-repl, y la copia en las checkouts tendrá prioridad sobre la dependencia declarada en project.clj. Tenga en cuenta que esto no es un reemplazo para listar el proyecto en :dependencies ; simplemente lo complementa por conveniencia.