我正在使用Clojure和Vaadin开发一个Web应用程序,但我无法让应用程序自动部署,所以我只需在浏览器上按刷新。有什么想法吗?
答案 0 :(得分:2)
理想情况下,您使用的REPL服务器允许您随意将新的Clojure代码加载到您的应用程序中。在这种情况下,只需将工作流程更改为:
如果您正在使用Maven,则可以在更改源文件时使用maven-jetty-plugin自动重新加载您的webapp。有关详细信息,请参阅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))))
无论您启动webapp的代码,还是主servlet init等,都可以添加以下内容:
(future (loop []
(Thread/sleep 5000)
(reload) ;; optionally specify a regex to match only your app's namespaces here
(recur)))
绝对不是您想要在制作中使用的东西。我更喜欢在每种情况下使用适当的远程REPL,但上面的内容会让你接受。