Что конкретно делают project.clj :dependencies и нужны ли они?

Я задаю этот вопрос, чтобы исправить путаницу, связанную с проектом.clj: зависимости и модули, указанные с помощью :use/:require.

Я использую Lein для сборки. Я хочу написать проект Clojure и, возможно, кроме того, что он зависит от конкретной версии Clojure, не хочу, чтобы проект зависел от конкретной версии какого-либо модуля.

Например:

(defproject bene-csv "1.0.0-SN"
  :description "A csv parsing library"
  :dependencies [[org.clojure/clojure "1.3.0"]
                 [clojure-csv/clojure-csv "1.3.2"]])

Мне не особо нужно зависеть от clojure-csv 1.3.2. Мой код будет работать с любой версией.

Нужно ли указывать зависимость, чтобы версия загружалась локально?

Если нет, то какие еще есть механизмы для получения нужных мне модулей и где они будут расположены?

Спасибо.


person octopusgrabbus    schedule 09.03.2012    source источник


Ответы (2)


Я считаю, что leiningen использует ту же систему управления версиями, что и maven. См. раздел Поддержание версий зависимостей в актуальном состоянии в проектах Leiningen. и Как сообщить Maven использовать последнюю версию зависимости?.

person deong    schedule 09.03.2012

Сказать Лейнингену: «Просто вытащите любую версию, которая вам нравится; мне все равно», — это просто напрашиваться на неприятности в будущем. Повторяемость — основа автоматизации: https://github.com/technomancy/leiningen/wiki/Repeatability

person Community    schedule 29.03.2012
comment
Спасибо. Я со временем пришел к такому же выводу. Лучше использовать данную версию, а затем обновлять и тестировать по мере появления новых версий. - person octopusgrabbus; 29.03.2012