使用 Ring(和 lein-ring 工具)时,我可以按照文档在开发环境下从“resources”等位置提供静态文件服务。但是,当我通过 lein uberwar 将它们打包后,在容器中运行时,我不知道该如何提供这些文件的服务。我看到关于 wrap-resource 或设置 :resource-path 的文档有冲突,但似乎都不起作用。
route/resources
放置在您的路径下:
(defroutes main-routes
(GET "/" [] "<h1>Hello World Wide Web!</h1>")
(route/resources "/")
(route/not-found "Page not found"))
然后,在您的项目中创建一个名为resources/public
的文件夹,并将静态文件放在其中。当引用这些文件时,/resources/public
是隐含的,因此您可以编写类似以下的内容:(include-css "/css/site.css")
。
这里是部署到CloudBees的示例。
resources/public
而不是 resrouce/public
吧? - kristianlmresources
文件夹应该用复数形式。 - kristianlmcompojure.route/resources
应该可以满足您的需求。
只需将文件放置在resources/public
中,然后在路由列表末尾添加一个路由(resources "/")
。
为了使这个功能正常工作,您需要使用相当新的lein-ring版本;旧版本的lein-ring不支持公共资产资源目录。
war/
目录中。模板文件(我使用soy)实际上留在resource/
目录中,并以某种方式编译到war目录中。我猜想这在你的情况下不可能或者行不通? - Paul