lein 运行 vs lein 蹦床 运行 vs uberjar

lein run vs lein trampoline run vs uberjar

lein runlein trampoline run 和将 clojure 应用部署为 uberjar 有什么区别?有什么性能差异吗?

如果我执行 lein run/lein trampoline run,我可以直接通过 ssh 进入服务器并从 git 中提取我的更改,而无需重新启动应用程序,但事实并非如此对于 uberjar。在 uberjars 的情况下,对于我需要构建和部署应用程序的每一个更改。

提前致谢。

默认情况下,这三个都不会实时处理您的代码更改。

  • lein 运行:执行目标或默认命名空间的 -main 函数。 Lein 运行s 完成了 main 方法的完整执行,因此如果您的 main 函数创建了一个 Web 服务器,那么 leiningen 进程也会一直保持运行。
  • lein trampoline: 将 -main 函数作为一个单独的进程执行,这样主 leiningen 进程就可以退出,因此你只有一个进程 运行ning
  • lein uberjar:创建一个独立的 jar 文件,这样任何其他用户都不需要将 lein 安装到 运行 您的代码中。 (或任何源文件)。对于 运行 jar,您执行 java -jar myjarname.jar 其中包含所有源代码和所有依赖项。

如果你正在使用ring,那么lein-ring有一个可以这样启动的开发模式:

   lein ring server

确实会为您重新加载代码。

编辑:在生产中使用哪一个?

这里假设 *production* 意味着将代码的捆绑版本交付给用户

使用 lein uberjar 创建一个 jar 并使您的最终产品独立于构建工具通常是首选方法。