2016-02-24 48 views
3

lein run,lein trampoline run和部署uberjar的cojure应用有什么区别?是否有任何性能差异?lein run vs lein trampoline run vs uberjar

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

在此先感谢。

回答

9

他们三人默认都不会实时处理您的代码更改。

  • lein run:执行目标或默认名称空间的-main函数。 Lein贯穿了主要方法的完整执行过程,所以如果你的主要功能创建了一个Web服务器,那么Leiningen过程也会一直保持。
  • 雷音蹦床:执行 - 主要功能作为一个单独的进程,使主leiningen过程可以退出,因此你只有一个进程中运行
  • 雷音uberjar:创建一个单独的jar文件,从而使任何其他用户不需要安装lein来运行你的代码。 (或任何源文件)。要运行该jar,请执行java -jar myjarname.jar其中包含所有源代码和所有依赖项。

如果您正在使用环工作,然后lein-ring有可以启动这样一个发展模式:

lein ring server 

这的确代码重装你。编辑:哪一个用于生产?

这里假设*产*表示提供代码的捆绑版用户

创建具有雷音罐子uberjar,进行独立的构建工具的最终产品通常是首选办法。

+0

因此,鉴于上述方法,哪一个应该用于生产,为什么?谢谢 – Chin365

+0

哪一个应该用于生产高度取决于你拥有的环境以及你想要做什么。但是一般的建议是:在生产系统上总是最好有一个设置,不*总是检查文件是否被修改。这会降低性能。因此,对于生产而言,当您必须重新启动应用才能更改正在运行的代码时,这很好。 –