2012-01-05 19 views
6

Estoy comenzando el proyecto lein new en clojure y quiero utilizar la biblioteca de extracción de artículos goose. Lamentablemente no pude encontrar el archivo jar de esa biblioteca en ningún repositorio maven disponible públicamente, así que me puse a agregarlo a un repositorio Maven local.Dependencias en los repositorios locales de maven con leiningen

En el directorio del proyecto, he copiado el tarro de ganso y sus pom.xml archivos e hicieron

mkdir maven-repo 
mvn install:install-file -Dfile=goose-2.1.6.jar -DartifactId=goose -Dversion=2.1.6 \ 
    -DgroupId=local -Dpackaging=jar -DlocalRepositoryPath=maven-repo -DpomFile=pom.xml 

Y añade lo siguiente al project.clj

:repositories {"local" ~(str (.toURI (java.io.File. "maven-repo")))} 

y [local/goose "2.1.6"] en :dependencies. Ahora cuando hago un lein deps, obtengo el archivo ganso-2.1.6.jar agregado al directorio lib, pero no las dependencias de ganso. Se enumeran en el archivo pom.xml del ganso.

¿Hay alguna forma de solucionar este problema que no sea enumerar las dependencias de ganso en mi project.clj?

Respuesta

10

Puede utilizar Lein-localrepo en lugar del comando larga mvn: https://github.com/kumarshantanu/lein-localrepo

Instalar así:

lein localrepo coords target/goose-2.1.6.jar | xargs lein localrepo install

Sin embargo, que por sí sola no ayudará a instalar el archivo POM en el repo. Además, usted debe ejecutar este:

cp pom.xml ~/.m2/repository/goose/goose/2.1.6/goose-2.1.6.pom

Tenga en cuenta que en este ejemplo ganso se instalará como groupId=goose, artifactId=goose. Puede anular eso si lo desea, y probablemente debería hacerlo.

+0

Sí, he visto su proyecto 'gravamen-localrepo' antes de recurrir al comando mvn larga. Elegí el mvn porque es solo un comando :). De todos modos, probaré este método también. ¿Me puede decir si esto obtendrá las dependencias de ganso cuando hago un 'lein deps'? –

+0

Impresionante. Usando este método, obtengo las dependencias de gansos en mi directorio lib. ¿Podría explicarnos un poco más cuál es la diferencia? Muchas gracias, amigo :) –

+0

Además, ¿cómo se supone que estas jarras locales están versionadas? Todo lo que puedo pensar es agregarlos en un directorio de proveedores y ejecutar los comandos locales de referencia anteriores en cada sistema en el que se clona este proyecto. ¿Alguna mejor manera? Se espera –

Cuestiones relacionadas