lein run vs lein trampoline run vs uberjar

В чем разница между lein run, lein trampoline run и развертыванием приложения clojure как uberjar? Есть ли разница в производительности?

Если я сделаю _3 _ / _ 4_, я могу просто подключиться к серверу по ssh и получить свои изменения из git без необходимости перезапуска приложения, это не относится к uberjar. В случае uberjars мне нужно для каждого изменения создавать и развертывать приложение.

Заранее спасибо.


person Chin365    schedule 24.02.2016    source источник


Ответы (1)


Все три из них по умолчанию не будут обрабатывать изменения вашего кода в реальном времени.

  • lein run: выполняет функцию -main целевого пространства имен или пространства имен по умолчанию. Lein выполняет полное выполнение этих основных методов, поэтому, если ваша основная функция создает веб-серверы, процесс leiningen также остается в рабочем состоянии все время.
  • lein trampoline: выполняет функцию -main как отдельный процесс, так что основной процесс leiningen может завершиться и, следовательно, у вас будет запущен только один процесс.
  • lein uberjar: создает автономный файл jar, поэтому другим пользователям не нужно устанавливать lein для запуска вашего кода. (или любой из исходных файлов). Чтобы запустить jar, вы выполняете java -jar myjarname.jar, который содержит весь исходный код и все зависимости.

Если вы работаете с кольцом, то lein-ring имеет режим разработки, который можно запустить таким образом. :

   lein ring server

который действительно будет перезагружать код для вас.

РЕДАКТИРОВАТЬ: какой из них использовать в производстве?

Предполагая, что здесь * production * означает доставку связанной версии вашего кода пользователю

Обычно предпочтительным способом является создание jar-файла с помощью lein uberjar и независимость конечного продукта от инструмента сборки.

person Nicolas Modrzyk    schedule 24.02.2016
comment
Итак, учитывая вышеперечисленные методы, какой из них следует использовать для производства и почему? Спасибо - person Chin365; 24.02.2016
comment
Какой из них следует использовать для производства, во многом зависит от вашей среды и того, что вы хотите делать. Но общая рекомендация: в производственной системе всегда лучше иметь настройку, которая не всегда проверяет, были ли файлы изменены. Это стоит производительности. Так что для производства нормально, когда вам нужно перезапустить приложение, чтобы получить изменения в работающем коде. - person Matthias Wimmer; 24.02.2016