lein run vs lein trampoline run vs uberjar

Chi*_*365 7 clojure uberjar leiningen

有什么区别lein run,lein trampoline run并将cojure应用程序部署为uberjar?有任何性能差异吗?

如果我这样做lein run/ lein trampoline run我可以直接进入服务器并从git中取出我的更改,而无需重新启动应用程序,对于uberjar也是如此.对于uberjars,我需要构建和部署应用程序.

提前致谢.

Nic*_*zyk 13

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

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

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

   lein ring server
Run Code Online (Sandbox Code Playgroud)

这将确实为您重新编码代码.

编辑:哪一个用于生产?

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

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