Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让clojure webapp自动重新部署?_Clojure_Vaadin - Fatal编程技术网

如何让clojure webapp自动重新部署?

如何让clojure webapp自动重新部署?,clojure,vaadin,Clojure,Vaadin,我正在用Clojure和Vaadin开发一个Web应用程序,但我无法使应用程序自动部署,所以我只需在浏览器上按“刷新”。有什么想法吗?理想情况下,您使用的是REPL服务器,它允许您随意将新的Clojure代码加载到应用程序中。在这种情况下,只需将您的工作流程更改为: 注意问题 转到Clojure编辑器 将新代码加载到正在运行的应用程序中 进入浏览器,点击刷新 如果您使用的是Maven,您可以使用Maven jetty插件在更改源文件时自动重新加载Web应用程序。有关更多信息,请参阅 另一个选择是

我正在用Clojure和Vaadin开发一个Web应用程序,但我无法使应用程序自动部署,所以我只需在浏览器上按“刷新”。有什么想法吗?

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

  • 注意问题
  • 转到Clojure编辑器
  • 将新代码加载到正在运行的应用程序中
  • 进入浏览器,点击刷新
  • 如果您使用的是Maven,您可以使用Maven jetty插件在更改源文件时自动重新加载Web应用程序。有关更多信息,请参阅

    另一个选择是不断尝试重新加载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,但上述方法都可以解决问题。

    我尝试过这种方法,但对Vaadin不起作用。你能提供更多的细节吗?嗨,我很抱歉,这是我在设置中的错误。是的,只要URL末尾有“?restartApplication”,浏览器刷新就可以工作