clojure - repl - ¿Cómo uso los frascos registrados con leiningen?
lein repl (3)
Tenemos algunos frascos de terceros registrados en nuestro proyecto. Nos gustaría añadirlos a la ruta de clase. Eso es. No queremos configurar un repositorio local (porque eso rompería nuestra filosofía de "verificar y ejecutar"). Cada desarrollador tendría que configurar su propio repositorio de Maven, distinto del proyecto.
¿Hay una manera de hacer esto o es esto? La mayoría de las respuestas que he visto dicen configurar un experto local que no deseamos o no necesitamos simplemente para agregar un frasco a un classpath.
Esta pregunta ya ha sido respondida here .
De hecho, es posible, pero hay una razón por la cual existe la gestión de dependencia y dependencia. Si tiene muchas dependencias, cambiar de versión es un enfoque recomendado.
Me gustaría profundizar en la excelente respuesta de @ Jared314 que también me ayudó.
A continuación, se encuentra una secuencia de comandos que automatiza el proceso de agregar varios archivos jar desde una carpeta lib
local a un repositorio local:
#!/bin/sh
export LOCALREPO_USERNAME=
export LOCALREPO_PASSWORD=
for file in lib/*.jar
do
name=$(basename "$file")
basename=${name%.jar}
echo "Deploying $basename"
artifactId="local/$basename"
lein deploy localrepo1 $artifactId 1.0 $file
echo "[$artifactId /"1.0/"]" >> dependencies.log
done
La lista de dependencias de Leiningen que se pueden agregar a project.clj
se almacena en dependencies.log
.
Antes de ejecutar el script, la entrada de :repositories
en project.clj
debe actualizarse para permitir leer el nombre de usuario y la contraseña del repositorio desde el entorno:
:repositories [["localrepo1" {:url "file:myrepo"
:username :env/localrepo_username
:password :env/localrepo_password}]]
Esto evitará que se muestre la solicitud de contraseña del repositorio al ejecutar el script.
Necesitará configurar un repositorio local de maven, pero ese puede ser un directorio simple, en su directorio de proyecto, que luego ingrese al control de código fuente. (Lo que mantendrá su política de ''retirar y ejecutar'')
A partir de Leiningen 2.2.0, la funcionalidad para desplegar tarros está integrada con la tarea de lein deploy
. Por lo tanto, la tarea se ha simplificado de las versiones anteriores.
Cree un directorio dentro de su proyecto llamado, en este ejemplo, myrepo
. (El nombre es arbitrario)
Agregue una entrada de :repositories
en su archivo project.clj
con una ruta al directorio local que creó.
:repositories [["localrepo1" "file:myrepo"]]
Despliega tu jarra flotante libre en el repositorio.
lein deploy localrepo1 com.blueant/fancypants 1.0.1 fancypants.jar
Y, agregue su dependencia a su proyecto.clj :dependencies
vector de :dependencies
como de costumbre.
:dependencies [[com.blueant/fancypants "1.0.1"]]
La tarea de implementación generará las sumas de comprobación y la estructura de directorios necesarias para vincularse con la resolución de dependencia lein. Puedes verificar que tu jar esté cargado correctamente con el lein deps :tree
.
Nota: Las rutas de los archivos en los :repositories
están formateadas como URL. Entonces, /Users/user1/Desktop
es file:///Users/user1/Desktop
, y, en un directorio local dentro del proyecto, myrepo
es file:myrepo
.