Leiningen è uno strumento di automazione per progetti Clojure: mentre si potrebbe, in teoria, continuare ad usare Ant e Maven direttamente per scaricare le dipendenze JAR ed eseguire operazioni quali la suite di test del progetto, Leiningen permette di scrivere solo il codice Clojure, e generare al volo tutto il resto.
In breve, Leiningen utilizzerà Ant e Maven sotto le coperte, e seguire il modello di Maven di download e cache delle dipendenze a livello globale, invece di immagazzinarli insieme al codice sorgente. Ma non si vedrà sotto il cofano.
Installazione
Supponendo che si sta utilizzando un sistema Linux come Ubuntu e la copia Clojure spediti, l'installazione del Leiningenpacchetto vi porterà il lein comando.
In alternativa, è possibile scaricare un singolo script dal raccoglitore / cartella, posto sul vostro percorso e renderlo eseguibile. Alla prima esecuzione verrà bootstrap si scaricando le dipendenze mancanti.
Ci sono anche istruzioni di installazione per le scatole di Windows, sia per la versione autoinstallante e uno stand-alone.
Una guida: creare un nuovo progetto
Leiningen in grado di creare uno scheletro semplice per il nostro progetto:
01.
[08:37:53] [giorgio @ Desmond: ~ / code] $ lein nuovo Clojure-midje-esempio
02.
Creato nuovo progetto
in
: / home / giorgio / code / Clojure-midje-esempio
03.
[08:38:01] [giorgio @ Desmond: ~] $
cd
Codice / Clojure-midje-esempio
04.
[08:38:29] [giorgio @ Desmond: ~ / code / Clojure-midje-esempio] $ albero
05.
.
06.
├ ─ ─ project.clj
07.
├ ─ ─ README
08.
├ ─ ─ src
09.
│ └ ─ ─ clojure_midje_example
10.
│ └ ─ ─ core.clj
11.
└ ─ ─
prova
12.
└ ─ ─ clojure_midje_example
13.
└ ─ ─
prova
14.
└ ─ ─ core.clj
15.
16.
5 directory, 4 file
Vediamo un test e la cartella src, nel migliore Java / JVM tradizione. Il file sorgente creato come esempi seguire la struttura della cartella come namespace:
1.
[09:00:17][giorgio@Desmond:~/code/clojure-midje-example]$
cat
test
/clojure_midje_example/
test
/core.clj
2.
(ns Clojure-midje-esempio.
prova
. nucleo
3.
(: usare [Clojure-midje-example.core])
4.
(: usare [. Clojure
prova
]))
5.
6.
(deftest sostituire-me; FIXME: scrivere
7.
(è
falso
"Nessun test sono stati scritti".
))
Si può già provare ad eseguire il test in mancanza:
01.
[09:02:52] [giorgio @ Desmond: ~ / code / Clojure-midje-esempio] $ lein
prova
02.
Copia 1
del file
in / home / giorgio / code / Clojure-midje-example / lib
03.
Testing Clojure-midje-esempio.
prova
. nucleo
04.
FAIL
in
(sostituire-me) (core.clj: 6)
05.
Nessun test sono stati scritti.
06.
atteso:
falso
07.
effettiva:
falso
08.
Ran 1 test contenente 1 asserzioni.
09.
fallimenti 1, 0 errori.
E, naturalmente, scrivere un vero banco di prova:
01.
[09:05:05][giorgio@Desmond:~/code/clojure-midje-example]$
cat
test
/clojure_midje_example/
test
/core.clj
02.
(ns Clojure-midje-esempio.
prova
. nucleo
03.
(: usare [Clojure-midje-example.core])
04.
(: usare [. Clojure
prova
]))
05.
06.
(deftest il-semplice-
prova
-you-can-scrittura
07.
(è 3 (+ 1 2)))
08.
[09:05:08] [giorgio @ Desmond: ~ / code / Clojure-midje-esempio]. $ lein testTesting Clojure-midje-esempio
di test
. nucleo
09.
Ran 1 test contenente 1 asserzioni.
10.
0 errori, 0 errori.
Leiningen produce anche un file. Gitignore che permette di ignorare le classi compilate, qualsiasi tipo di JAR, XML generato e metadati del proprio Leiningen.
L'installazione di una libreria: Midje
Midje è un ambiente di test per Clojure, che voglio installare sia per essere in grado di provare più tardi e per dimostrare come Leiningen può tirare in una libreria.
Il file project.clj contiene tutte le definizioni delle dipendenze che Leiningen utilizzerà per afferrare JAR. Il formato di: dipendenze è un elenco di 2-elemento liste, in cui ogni 2-elemento della lista contiene il nome della biblioteca e la versione necessaria come una stringa.
1.
[09:06:11] [giorgio @ Desmond: ~ / code / Clojure-midje-esempio] $
cat
project.clj
2.
(defproject Clojure-midje-esempio
"1.0.0-snapshot"
3.
: descrizione
"FIXME: scrivere descrizione"
4.
: le dipendenze [[org.clojure / Clojure
"1.2.1"
]])
Per impostazione predefinita, Leiningen sarà recuperare dei pacchetti Clojars, il repository principale per la comunità biblioteche Clojure, e da Maven centrale.
Facciamo fissare i nostri project.clj per includere midje e midje-lein, due JAR che renderanno Midje a disposizione del progetto corrente. La prima è la biblioteca reale, mentre il secondo fornisce il lein midje comando, una versione più bello di prova lein.
1.
[09:12:52] [giorgio @ Desmond: ~ / code / Clojure-midje-esempio] $
cat
project.clj
2.
(defproject Clojure-midje-esempio
"1.0.0-snapshot"
3.
: descrizione
"FIXME: scrivere descrizione"
4.
: le dipendenze [[org.clojure / Clojure
"1.2.1"
]
5.
[midje
"1.3.0"
]]
6.
: dev-dipendenze [[lein-midje
"1.0.7"
]])
Ho messo in midje: dipendenze solo per mostrare una diversa opzione per le biblioteche, ma dovrebbe in realtà essere messo in: dev-dipendenze. La differenza è in quest'ultimo caso non sarà spedito nel pacchetto JAR del progetto, né essere tirato in progetti che dipendono da quello attuale.
Per convalidare la disponibilità di midje, scriviamo il test più semplice midje:
01.
[09:17:04][giorgio@Desmond:~/code/clojure-midje-example]$
cat
test
/clojure_midje_example/
test
/core.clj
02.
(ns Clojure-midje-esempio.
prova
. nucleo
03.
(: usare [Clojure-midje-example.core])
04.
(: usare [. Clojure
prova
])
05.
(: usare [midje.sweet]))
06.
07.
(deftest il-semplice-
prova
-you-can-scrittura
08.
(è 3 (+ 1 2)))
. 09
(fatto (+ 1 2) = &
gt
; 3)
10.
[09:16:55] [giorgio @ Desmond: ~ / code / Clojure-midje-esempio] $ lein midje &
gt
; &
gt
; &
gt
.; Clojure
prova
sommario:
11.
Ran 1 test contenente 1 asserzioni.
12.
0 errori, 0 errori.
13.
&
gt
; &
gt
; &
gt
; sintesi Midje:
14.
Tutti i fatti sosteneva (1) sono state confermate.
Lein comandi più
Ho postato questo esempio su Github , sia per il vostro futuro mio e di riferimento.
Per quelli di voi che non provengono da un background JVM, non tenta di eseguire i file CLJ in isolamento:. lein dovrebbe sempre essere usato come un wrapper per lui per poter piazzare le dipendenze nel classpath.
Lein fornisce molti altri comandi per questo obiettivo, ad esempio:
- Lein eseguire chiamerà il -principale funzione nello spazio dei nomi definito con: principali project.clj (è facile dimostrare che spiegare:. vedere il codice sorgente)
- aiutare lein eseguire visualizzerà le informazioni sul comando run; sostituire il comando preferito per imparare tutte le sue opzioni e come interagisce con project.clj.
- Lein vaso e lein uberjar produrrà un JAR e un JAR autonomo rispettivamente per la distribuzione di codice.
Conclusioni
Tu non lo vedi in questo campione di uscita, ma lein midje fornisce anche i colori (una barra verde), in quanto è un'attività personalizzata Leiningen. L'utilizzo effettivo di Midje è fuori della portata di questo articolo, ma spero di aver fornito un modo semplice per afferrare dipendenze all'interno del progetto.
Lein è facile da usare, e fornisce una documentazione sufficiente per casi d'uso di base, si integra in test come un compito di prima classe. Tuttavia i messaggi di errore sono un po 'criptico, e questo è tipico di Clojure: assicuratevi di fare piccoli passi al fine di individuare facilmente eventuali errori nelle ultime righe che hai scritto.