【问题标题】:How can I get a clojure webapp to automatically redeploy?如何让 clojure webapp 自动重新部署?
【发布时间】:2010-10-01 08:24:23
【问题描述】:

我正在 Clojure 和 Vaadin 中开发一个 web 应用程序,但我无法让应用程序自动重新部署,因此我只需在浏览器上按刷新。有什么想法吗?

【问题讨论】:

    标签: clojure vaadin


    【解决方案1】:

    理想情况下,您使用的 REPL 服务器允许您随意将新的 Clojure 代码加载到您的应用程序中。在这种情况下,只需将工作流程更改为:

    1. 通知问题
    2. 转到 Clojure 编辑器
    3. 将新代码加载到正在运行的应用程序中
    4. 转到浏览器,点击刷新。

    如果您使用的是 Maven,则可以在更改源文件时使用 maven-jetty-plugin 自动重新加载您的 web 应用。请参阅this post 了解更多信息。

    另一种选择是不断尝试重新加载您的 Clojure 代码。可能是这样的:

    (defn reload
      ([] (reload #"."))
      ([ns-pattern]
        (doseq [ns (all-ns)
                :let [ns (.name ns)]
                :when (re-seq ns-pattern (str ns))]
          (require ns :reload))))
    

    在您启动 web 应用程序的任何代码中,或在您的主 servlet 初始化等中,添加如下内容:

    (future (loop []
              (Thread/sleep 5000)
              (reload) ;; optionally specify a regex to match only your app's namespaces here
              (recur)))
    

    绝对不是您想在生产中使用的东西。我更喜欢在每种情况下都使用适当的远程 REPL,但以上内容可以帮助您解决问题。

    【讨论】:

    • 我试过这个,但它不适用于 Vaadin。请您提供更多详细信息吗?
    • 嗨,很抱歉,这是我设置错误。是的,只要我在 URL 末尾有“?restartApplication”,浏览器刷新就可以工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2015-11-21
    • 2018-11-07
    • 2016-09-03
    • 2018-09-04
    • 1970-01-01
    相关资源
    最近更新 更多