【发布时间】:2010-10-01 08:24:23
【问题描述】:
我正在 Clojure 和 Vaadin 中开发一个 web 应用程序,但我无法让应用程序自动重新部署,因此我只需在浏览器上按刷新。有什么想法吗?
【问题讨论】:
我正在 Clojure 和 Vaadin 中开发一个 web 应用程序,但我无法让应用程序自动重新部署,因此我只需在浏览器上按刷新。有什么想法吗?
【问题讨论】:
理想情况下,您使用的 REPL 服务器允许您随意将新的 Clojure 代码加载到您的应用程序中。在这种情况下,只需将工作流程更改为:
如果您使用的是 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,但以上内容可以帮助您解决问题。
【讨论】: