2011-02-18 10 views

Respuesta

4

En un proyecto de Leiningen, el archivo project.clj dicta las dependencias del proyecto, y cuando ejecuta 'lein deps', todas las dependencias enumeradas en el archivo project.clj se descargan en lib /. Por lo tanto, no es necesario verificar los archivos jar porque project.clj en combinación con el comando 'lein deps' es todo lo que necesita para que otra persona pueda reproducir la misma lib/que usted tiene. Controlar todos los frascos es redundante y una pérdida de espacio.

Además, como señala mblinn, es mejor extraer los archivos de los repositorios de artefactos diseñados con el fin de distribuir y actualizar dependencias, en lugar de cambiar y comprometer constantemente nuevos archivos siempre que se actualice una dependencia. Esto es especialmente cierto cuando su proyecto depende de los recipientes de instantáneas, que están sujetos a cambios frecuentes; si registró los tarros, tendrá que registrar un nuevo tarro cada vez que se actualice la instantánea, pero si confía en 'lein deps' para extraer los tarros de los repositorios de artefactos, entonces se mantendrá actualizado sin esfuerzo. Pero incluso para las jarras que no son instantáneas, actualizar una dependencia cambiando su versión en project.clj y luego ejecutar 'lein deps' es mucho más fácil y más rápido que colocar manualmente el jar en lib/y registrarlo.

I Espero que la explicación anterior sea accesible. Si no, y no comprende algunos de los conceptos discutidos, como repositorios de artefactos o dependencias, hágamelo saber y le explicaré.

+0

Puse [rome/rome "1.0"] en mi proyecto: dependencias, pero cuando intento obtener deps, recibo un error que dice que necesito descargar rome.jar: 1.0 manualmente. En este punto, no sé qué hacer. – dan

+0

ya sea que cargue roma a clojars oa su repositorio maven local, entonces lein lo encontrará –

+0

¿Cuánto Maven debería aprender para administrar las dependencias lein? – dan

2

Bueno, el objetivo de Leiningen o de cualquier otra herramienta de administración de dependencias es que administre sus dependencias por usted. Esas dependencias se encuentran en repositorios de artefactos separados que se adaptan mejor a las versiones públicas de artefactos de software que los sistemas de control de origen. Leiningen se aprovecha del sistema de repositorio de Maven (una biblioteca de compilación/herramienta de administración de dependencias de Java); sin embargo, también hay repos de artefactos específicos de Clojure.

De todos modos, el punto es que usted declara las dependencias que su proyecto tiene en su project.clj, y verifica ese archivo project.clj en el control de código fuente. Otros desarrolladores lo comprueban y ejecutan 'lein deps' para eliminar esas dependencias, y ¡voilá!

4

Una de las mayores ventajas de la administración automática de dependencias es que sus bibliotecas no están almacenadas en su VCS, junto con todas sus sutiles implicaciones cuando se trata de versiones.

Como Leiningen internamente utiliza resolución de artefactos experto, es necesario especificar manualmente qué repositorios artefacto en caso de que la dependencia requerida no se encuentra en el repositorio por defecto, es decir maven central repository, clojure releases y clojars

P. ej en el caso de Roma v1.0 que aún no se implementa en experta en centrales pero se encuentra en java.net project kenai repo que tendrá que teclear su project.clj algo en este sentido:

... 
:dependencies [[rome/rome "1.0"] ...] 
:repositories {"kenai" "http://download.java.net/maven/2/"} 
... 
4

Git es sorprendentemente malo en el almacenamiento de archivos binarios Si registra sus tarros y luego tiene que realizar actualizaciones en la línea, pronto su depósito será de cientos de megabytes.

+0

Eso es bueno saber. Gracias por el consejo. – dan

Cuestiones relacionadas