Как упаковать проект leiningen для перекомпиляции со всеми включенными библиотеками? [для пользователей без подключения к интернету]


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

Как я могу упаковать проект leiningen для перекомпиляции со всеми включенными библиотеками?

предположения

  • они установили leiningen на своей машине перед мастерской.

Править Это почти такой же вопрос, как Как упаковать проект maven для перекомпиляции со всеми включенными библиотеками? [без подключения к интернету]

1 2

1 ответ:

Переместите свой ~/.каталог м2 в сторону. Выполните все команды lein x leiningen, которые, как вы ожидаете, будут выполняться вашими пользователями, а также создайте и Протестируйте свой проект (test, install, jar, uberjar и т. д.). Это загрузит (много) зависимостей для самого Leiningen, а также для вашего проекта. $HOME/.m2 - это место, где вы найдете все файлы jar, которые были извлечены Maven-решателем зависимостей.

После этого добавьте :offline? true в проект.clj, согласно документации, это будет предотвратить Leiningen от проверки сети зависимостей.

См. Maven - альтернатива.каталог m2 для альтернативы необходимости перемещения вашего .каталог м2 в сторону.

Чтобы облегчить его использование для ваших студентов, возможно, лучше всего создать автономный zip-архив со всем содержимым .каталог m2, ваш проект и сам Leiningen, вместе с базовым инсталлятором (bash script, или пакетный файл), который перемещает или символически связывает.m2 каталог в нужное место и добавляет сценарий lein к пути. Этот подход должен удовлетворять потребности оффлайна - я думаю, что он охватывает все зависимости, которые вам понадобятся.

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