Путаница вокруг lein: зависимости и: плагины

В project.clj, когда вы видите такие вещи, как:

:dependencies [[org.clojure/clojure       "1.8.0"]
               [org.clojure/clojurescript "1.7.228"]
               [com.cemerick/piggieback "0.2.1"]
               [org.clojure/tools.nrepl "0.2.10"]
               [org.clojure/core.async "0.2.374"]]

а также:

:plugins [[org.bodil/lein-noderepl "0.1.11"]
          [lein-cljsbuild           "1.1.2"]
          [lein-npm                 "0.6.1"]
          [lein-repls               "1.9.5"]
          [lein-doo                 "0.1.6"]]
  1. Откуда эти пакеты? Это исключительно Clojars и Maven? Можно ли настроить Lein для получения их от GitHub?
  2. Когда эти пакеты добавляются в ваш проект, можно ли просто загрузить их и добавить в путь к классу Java? Или что-то еще происходит?

1 ответ

Решение
  1. Откуда эти пакеты?

на что хорошо отвечают Что такое стандартные хранилища leiningen?

Вы можете использовать что-то вроде lein-git-deps для загрузки зависимостей из GitHub, но я бы порекомендовал использовать репозитории Maven, поскольку именно на этом основана экосистема Leiningen.

  1. Lein просто загружает их и добавляет их в ваш путь к классу Java? Или что-то еще происходит?

Это заслуживает дальнейшего обсуждения. Когда вы запускаете leiningen REPL (например), Leiningen сначала смотрит в свой локальный ~/.m2 хранилище для всех зависимостей в :dependencies, Если он не может найти ни одного из них, он отправит запрос в каждый из репозиториев этого проекта, чтобы узнать, есть ли у них копия этой зависимости. Если они это сделают, Leiningen загрузит его, затем рекурсивно загрузит эти зависимости и так далее. Как только все зависимости будут загружены, Leiningen добавит их все в путь к классам вашего приложения и запустит приложение.

С Leiningen нужно помнить, что есть две JVM и две пути к классам, одна для вашего приложения и одна для Leiningen. Когда вы добавляете зависимости к :dependencies они попадают в путь к классу вашего приложения, когда они добавляются в :pluginsони идут к классной дорожке Лейнингена.

Другие вопросы по тегам