9

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

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

提前致谢。

4

1 回答 1

18

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

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

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

   lein ring server

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

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

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

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

于 2016-02-24T07:26:55.960 回答