Установка библиотек с leiningen без создания проекта

Я изучаю Clojure и исходя из фона Ruby.

Я ищу что-то аналогичное gem install <library>. Различные заклинания lein install, похоже, не соответствуют этому законопроекту.

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

Ответы

Ответ 1

Похоже, вы хотите установить библиотеку с lein. Вот плагин, установите его и используйте как

 lein localrepo install <filename> <[groupId/]artifactId> <version>

Ответ 2

Если ваша цель - просто загрузить библиотеки в REPL, рассмотрите возможность использования alembic. Он загружает динамические пути классов, разрешает зависимости и автоматически вытягивает библиотеки из репозиториев.

Вот пример использования:

(require 'alembic.still)
(alembic.still/distill '[enlive "1.1.1"])

Вам просто нужно добавить следующую запись в .lein/project.clj:

{:dev {:dependencies [[alembic "0.1.1"]]}}

См. этот ответ.

Ответ 3

Java и, следовательно, clojure обычно не имеют идеи для библиотек, установленных на глобальном уровне. Вы всегда должны создавать classpath с минимальным набором зависимостей. Вам нужно как-то указать и управлять этим путём классов, и самый простой способ сделать это - с leiningen, для которого требуется проект.

leiningen автоматизирует процесс извлечения удаленных библиотек и размещения их в вашем локальном репозитории, который несколько аналогичен установке gem, но эти библиотеки не становятся автоматически доступными для REPL.

Самый простой способ всегда иметь набор библиотек - создать проект "нуля", который вы используете для экспериментов REPL перед началом нового проекта. Это не слишком много накладных расходов.

Ответ 4

В lein 2 вы можете обновить profiles.clj с пакетом, который хотите установить:

~\user\.lein\profiles.clj

При первом запуске любого проекта с lein локальное репо будет обновлено с тем, что было обнаружено в profiles.clj.

Иногда я просто запускаю отладки lein, не будучи в папке проекта, это обновит локальное репо для вас.

Таким образом, вы можете добавить любую библиотеку в ваш project.clj или вызвать ее из repl, и она будет извлечена из локального репо.