Clojure 莱恩跑vs莱恩蹦床跑vs uberjar

Clojure 莱恩跑vs莱恩蹦床跑vs uberjar,clojure,leiningen,uberjar,Clojure,Leiningen,Uberjar,lein-run、lein-trampoline-run和部署clojure应用程序作为uberjar有什么区别?性能有什么不同吗 如果我运行lein运行/lein蹦床运行,我可以直接用ssh连接到服务器并从git中提取更改,而无需重新启动应用程序,uberjar的情况就不一样了。对于uberjars,对于构建和部署应用程序所需的每一项更改 提前感谢。默认情况下,这三个选项都不会实时处理您的代码更改 lein run:执行目标或默认命名空间的-main函数。Lein完成了主要方法的全部执行,因

lein-run
lein-trampoline-run
和部署clojure应用程序作为uberjar有什么区别?性能有什么不同吗

如果我运行
lein运行
/
lein蹦床运行
,我可以直接用ssh连接到服务器并从git中提取更改,而无需重新启动应用程序,uberjar的情况就不一样了。对于uberjars,对于构建和部署应用程序所需的每一项更改


提前感谢。

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

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

   lein ring server
这确实会为您重新加载代码

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

这里假设“生产”意味着向用户交付捆绑版本的代码


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

那么,鉴于上述方法,哪种方法应该用于生产,为什么?感谢生产中应该使用哪一个在很大程度上取决于您所处的环境和您想要做什么。但一般建议:在生产系统上,最好总是有一个设置,它并不总是检查文件是否被修改。这会影响性能。因此,对于生产环境,当您必须重新启动应用程序以更改运行的代码时,这是可以接受的。