2012-01-05 13 views
6

Sto iniziando il progetto lein new in clojure e voglio usare la libreria di estrazione articolo goose. Purtroppo non sono riuscito a trovare il barattolo di quella libreria su nessun repository di maven disponibile pubblicamente, quindi ho deciso di aggiungerlo a un repository di maven locale.Dipendenze in repository locali generici con leiningen

nella directory del progetto, ho copiato il vaso d'oca ei suoi file pom.xml e ha fatto

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 

E aggiunto il testo seguente project.clj

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

e [local/goose "2.1.6"] in :dependencies. Ora quando faccio un lein deps, ottengo il file Goose-2.1.6.jar aggiunto alla directory lib, ma non le dipendenze di goose. Sono elencati nel file pom.xml dell'oca.

C'è un modo per risolvere questo problema oltre a elencare le dipendenze di goose nel mio project.clj?

risposta

10

È possibile utilizzare Lein-localrepo al posto del comando lunga mvn: https://github.com/kumarshantanu/lein-localrepo

Installare in questo modo:

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

tuttavia, che da solo non aiuterà a installare il file POM nella pronti contro termine. È consigliabile eseguire inoltre questo:

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

Si noti che in questo esempio Oca sarà installato come groupId=goose, artifactId=goose. Puoi ignorarlo se lo desideri, e probabilmente dovresti.

+0

Sì, ho visto il progetto 'lien-localrepo' prima di ricorrere al lungo comando mvn. Ho scelto la MVN perché è solo un comando :). Comunque, proverò anche questo metodo. Potete dirmi se questo otterrà le dipendenze di oca quando faccio un 'lein deps'? –

+0

Fantastico. Usando questo metodo, ottengo le dipendenze dell'oca nella mia directory lib. Potresti spiegare un po 'di più qual è la differenza? Grazie mille uomini :) –

+0

Inoltre, come si suppone che questi vasi locali siano versionati? Tutto quello che posso pensare è di aggiungerli in una directory del fornitore ed eseguire i suddetti comandi localrepo su ogni sistema che questo progetto è clonato. Qualche modo migliore? –