Как установить зависимость в проекте Clojure

Это вопрос о нобе, поэтому я сожалею, если я оскорбил кого-то.

Но как установить качели на компьютер * nix? Да, я прочитал файл README.MD, но как проект .clj знает, где найти библиотечные банки (например, для качелей)?

Ответ 1

Отредактируйте project.clj и добавьте зависимость (вектор информации и версии, идентифицирующей проект) к вектору: dependencies в project.clj.

Объявление зависимости выглядит следующим образом: [seesaw "1.4.2"] Что вы можете найти, выполнив поиск качелей на http://clojars.org.

Ваш файл проекта должен как минимум выглядеть примерно так:


(defproject my-awesome-gui-application "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [seesaw "1.4.2"]])

Если вы используете более новую версию leiningen, вы можете набрать lein deps :tree чтобы увидеть ваше дерево зависимостей. Другими словами, вы можете увидеть, какие библиотеки на самом деле используются, т.е. те, которые вы объявили, и их переходные зависимости.


$ lein deps :tree
 [org.clojure/clojure "1.4.0"]
 [seesaw "1.4.2"]
   [com.jgoodies/forms "1.2.1"]
   [com.miglayout/miglayout "3.7.4"]
   [j18n "1.0.1"]
   [org.fife.ui/rsyntaxtextarea "2.0.3"]
   [org.swinglabs.swingx/swingx-core "1.6.3"]
     [org.swinglabs.swingx/swingx-action "1.6.3"]
     [org.swinglabs.swingx/swingx-autocomplete "1.6.3"]
       [org.swinglabs.swingx/swingx-common "1.6.3"]
     [org.swinglabs.swingx/swingx-painters "1.6.3"]
     [org.swinglabs.swingx/swingx-plaf "1.6.3"]

Если вы используете более старую версию leiningen, введите lein deps и посмотрите в. /libs, чтобы узнать, какие файлы были извлечены (более новые версии lein умнее и используют файлы непосредственно в ~/.m2 вместо того, чтобы копировать их в свой проект). Каталог ~/.m2 - это местоположение вашего локального репозитория Maven. Leiningen работает с Maven и загружает все указанные вами зависимости, чтобы вам не пришлось беспокоиться о Maven напрямую.)

Я упомянул Maven и ваш локальный репозиторий maven в ~/.m2. Если вам повезет, вам, возможно, вообще не придется думать о Maven (за исключением, возможно, просмотра maven central, чтобы найти библиотеки Java, которые можно вставить в ваш project.clj), но бывают случаи, когда вы можете подозревать, что jar файл поврежден или что-то этот эффект, и хорошо знать, что вы можете просто сдуть это состояние, удалив хранилище .m2.

Ответ 2

Файлы project.clj определяют конфигурацию проекта для leiningen.

Leiningen загружает и устанавливает зависимости, указанные в файле project.clj, и запускает проект/запускает процесс repl/компилирует проект в java jar/whatever. См. Ссылку выше. Короче говоря, leiningen - самый популярный клей между вашей базовой ОС и базовым java-интерфейсом clojure runtime/compiler.

Обычно вам не нужно устанавливать какие-либо clojure libs (или даже clojure). За исключением случаев, когда вам нужны дополнительные библиотеки для разработки/отладки текущего проекта (и часто это не так), вы просто устанавливаете leiningen, а leiningen будет устанавливать зависимости для проекта, который вы хотите запустить.

Более конкретно: leiningen получает свои инструкции по загрузке/установке, делегируя maven, что является очень интересным проектом. Но, возможно, не стоит смотреть слишком близко, если ваше время драгоценно.