2015-06-29 19 views
7

devo alcuni valori ripetuti nel mio project.clj come qui di seguito:Leiningen: come definire le costanti in project.clj?

(defproject foo "0.1.0-SNAPSHOT" 
    ... 

    :dependencies [[bar "3.4.5"] 
       [baz "3.4.5"] 
       [bat "3.4.5"]] 

    ...) 

Vorrei utilizzare una sorta di costante qui così, quando queste librerie vengono aggiornate per 3.5.0 per esempio, ho dovuto cambiare un solo posto.

Qual è la migliore pratica qui? Meglio che posso venire in mente è questa:

(def deps-version "3.4.5") 

(defproject foo "0.1.0-SNAPSHOT" 
    ... 

    :dependencies [[bar ~deps-version] 
       [baz ~deps-version] 
       [bat ~deps-version]] 

    ...) 
+0

Ho aggiunto una risposta ma ho pensato che non eri in grado di far funzionare le costanti, è questo il caso? Ti manca il carattere '~' nel tuo esempio, ad esempio '[bar ~ deps-version]'. La tua soluzione è qualcosa che ho usato al di fuori di leiningen (in gradle per le versioni del driver del selenio), quindi c'è solo una modifica da fare e si adatta abbastanza bene. –

+0

Grazie a @MarkFisher, ho corretto il codice. – muhuk

+1

quindi qual è l'essenza della tua domanda ora? se è solo "dovrei usare versioni come questa?" allora la risposta è probabilmente semplicemente, sì. –

risposta

1

Utilizzando una definizione prima defproject è assolutamente soddisfacente e la pratica comune.

Puoi anche cose più avanzate come a seconda dell'ambiente di costruzione (taggare anche la versione del progetto efficace in quel caso). Un buon esempio si trova nelle risposte a questa domanda "Leiningen: How to define constants in project.clj?"

+0

Il link, uh, porta a questa stessa pagina. Per capire la ricorsione bisogna capire la ricorsione ... –

Problemi correlati