2015-06-29 10 views
7

mam pewne wartości powtarzające się w moim project.clj jak poniżej:Leiningen: Jak definiować stałe w projekcie.clj?

(defproject foo "0.1.0-SNAPSHOT" 
    ... 

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

    ...) 

chciałbym użyć jakiegoś stała tu tak, to kiedy te biblioteki aktualizowane na 3.5.0 na przykład, muszę zmienić tylko jedno miejsce.

Jaka jest tutaj najlepsza praktyka? Najlepsze, co mogę wymyślić to:

(def deps-version "3.4.5") 

(defproject foo "0.1.0-SNAPSHOT" 
    ... 

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

    ...) 
+0

Dodałem odpowiedź, ale myślałem, że nie można uzyskać stałych do pracy, czy tak jest? Brakujesz znaku '~' w twoim przykładzie, tj. '[Bar ~ deps-version]'. Twoje własne rozwiązanie jest czymś, czego użyłem poza Leiningen (w gradle dla wersji sterowników selenu), więc jest tylko jedna zmiana i pasuje wystarczająco dobrze. –

+0

Dzięki @MarkFisher, naprawiłem kod. – muhuk

+1

, więc jaka jest teraz sedno pytania? jeśli to po prostu "czy powinienem używać takich wersji?" wtedy odpowiedź jest prawdopodobnie po prostu tak. –

Odpowiedz

1

Stosując definicję przed defproject jest całkowicie w porządku i powszechną praktyką.

Możesz także bardziej zaawansowane rzeczy, takie jak w zależności od środowiska kompilacji (w tym przypadku oznaczyłbym również efektywną wersję projektu). Dobry przykład znajduje się w odpowiedzi na to pytanie "Leiningen: How to define constants in project.clj?"

+0

Link, uh, prowadzi do tej samej strony. Aby zrozumieć rekursję, trzeba zrozumieć rekursję ... –