2013-05-07 8 views
39

Quello che faccio ora è project.clj aperto, aggiungere dipendenza lì, eseguire lein deps restart repl, quindi use, require e così via.Un modo per aggiungere dipendenza al progetto lein senza riavviare REPL?

Il fatto è che non mi piace davvero riavviare repl perché il tempo di avvio è lento e devo ricaricare nuovamente i miei file.

Quindi c'è un modo migliore per aggiungere dipendenza al progetto lein? senza riavviare il repl?

risposta

34

È possibile utilizzare Alembic, un caricatore di percorsi di classe dinamico e un resolver di dipendenze. La cosa buona è che non carica tutte le dipendenze del melograno.

Aggiungere il seguente alla .lein/profiles.clj:

{:user 
    {:dependencies [[alembic "0.3.2"]]}} 

Poi, nel tuo Repl basta caricare i percorsi di classe è necessario, saranno tirati dai repository da lein in caso di necessità:

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

(require 'net.cgrand.enlive-html) dovrebbe adesso funziona.

+0

sembra ancora meglio! grazie – LoveProgramming

+1

Oh wow, mancava questo mentre scrivevo essenzialmente la stessa risposta. +1. –

+0

@ Kolja, grazie per aver individuato l'errore di battitura. –

11

per il test rapido è possibile utilizzare pomegranate per aggiungere le dipendenze al volo

=> (use '[cemerick.pomegranate :only (add-dependencies)]) 
nil 
=> (add-dependencies :coordinates '[[incanter "1.2.3"]]) 

per realtà l'aggiunta di una dipendenza che ususally colpito

  • Alt-x nrepl-restart
  • ctrl-cctrl-k per ricaricare il file,
  • ctrl-calt-n per tornare allo spazio dei nomi che nel buffer

L'intero processo dura il tempo di avvio JVM (che Sono d'accordo è un tocco doloroso) più di cinque secondi. Aiuta a mantenere il progetto in uno stato in cui il caricamento di un file richiede tutto l'inizializzazione.

+0

Grazie! questo è esattamente quello che stavo cercando – LoveProgramming