2013-05-06 13 views
15

Sto imparando Clojure e provengo da uno sfondo di Ruby.Installazione di librerie con leiningen senza creare il progetto

Sto cercando qualcosa di analogo a gem install <library>. I vari incantesimi di lein install non sembrano adattarsi a questo disegno di legge.

C'è un modo per installare semplicemente una libreria localmente in modo che possa essere referenziata in REPL senza la necessità di creare un progetto?

risposta

6

A quanto pare, si desidera installare una libreria con lein. Ecco il plugin, installarlo e utilizzarlo come

lein localrepo install <filename> <[groupId/]artifactId> <version> 
3

Java e quindi clojure non fare generalmente hanno la l'idea di librerie installate a livello globale. Dovresti sempre creare un classpath con il set minimo di dipendenze. È necessario in qualche modo specificare e gestire questo percorso di classe e il modo più semplice per farlo è con leiningen, che richiede un progetto.

leiningen automatizza il processo di recupero delle librerie remote e il loro inserimento nel repository locale che è in qualche modo analogo all'installazione gem, ma queste librerie non diventano automaticamente disponibili per un REPL.

Il modo più semplice per disporre di una serie di librerie sempre disponibili consiste nell'avere un progetto "scratch" che si utilizza per gli esperimenti REPL prima di iniziare un nuovo progetto. Non è troppo di un overhead.

3

In Lein 2 è possibile aggiornare profiles.clj con il pacchetto che si desidera installare:

~\user\.lein\profiles.clj 

Con la prima esecuzione di qualsiasi progetto con Lein, il repo locale sarà aggiornato con quello che è stato incereased nei profili. CLJ.

A volte eseguo semplicemente lein deps senza essere in una cartella di progetto, questo aggiornerà il repository locale per te.

In questo modo è possibile aggiungere qualsiasi libreria a project.clj o chiamarla da repl e verrà estratta dal repository locale.

6

Se l'obiettivo è semplicemente caricare le librerie in REPL, considerare l'utilizzo di alembic. Carica percorsi di classe dinamicamente, risolve le dipendenze e preleva automaticamente le librerie dai repository.

Ecco un caso d'uso:

(require 'alembic.still) 
(alembic.still/distill '[enlive "1.1.1"]) 

Si richiede semplicemente di aggiungere la seguente voce al vostro .lein/project.clj:

{:dev {:dependencies [[alembic "0.1.1"]]}} 

Vedi this answer.

Problemi correlati