【问题标题】:lein run vs lein trampoline run vs uberjarlein run vs lein trampoline run vs uberjar
【发布时间】:2016-06-06 08:26:15
【问题描述】:

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

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

提前致谢。

【问题讨论】:

    标签: clojure leiningen uberjar


    【解决方案1】:

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

    • 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 并使您的最终产品独立于构建工具通常是首选方式。

    【讨论】:

    • 那么鉴于以上方法,生产中应该使用哪一种,为什么?谢谢
    • 哪一个应该用于生产很大程度上取决于您拥有的环境和您想要做什么。但一般建议:在生产系统上,最好有一个设置,它总是检查文件是否已被修改。这会降低性能。因此,对于生产而言,当您必须重新启动应用程序以更改正在运行的代码时,这很好。
    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 2016-02-12
    • 2012-10-07
    • 1970-01-01
    • 2016-03-25
    • 2017-08-18
    • 2012-12-31
    • 1970-01-01
    相关资源
    最近更新 更多