Sbt dist导致无法访问非托管资源?

时间:2018-05-29 14:04:02

标签: scala playframework sbt playback

使用我的sbt-play / scala应用程序,我在开发时一直在使用sbt run。 几乎完成了我的项目,现在我想为生产目的而设计dist。 (如果这是一个坏主意,请纠正我。)

我的问题在这里。

通过我的sbt运行,我可以通过添加

来访问非托管资源
unmanagedResourceDirectories in Assets += baseDirectory.value / "works"

到我的build.sbt

然而,在sbt dist之后,相同的网址不再有效并向我发送404未找到错误。

Not Found For request 'GET /assets/RAW/abc.png'

此“works”文件夹包含将在服务期间生成的文件,该文件与通常的“公共”文件夹不同。

这是我的路线FYI。

GET     /assets/*file               controllers.Assets.at(path="/public", file)
GET     /works/*file                controllers.Assets.at(path="/works/", file)

sbt-dist是否需要build.sbt中的任何其他代码或我应该修复什么?

2 个答案:

答案 0 :(得分:1)

通过unmanagedResourceDirectories

指定的

Additional asset directories

unmanagedResourceDirectories in Assets += baseDirectory.value / "works"
根据{{​​3}}

也将从public投放

  

sbt-web的细微差别在于所有资产都是从公众那里获得的   文件夹...请注意,那里的文件将聚合到目标公用文件夹

这意味着您需要从

更改GET /works路线
GET     /works/*file                controllers.Assets.at(path="/works/", file)

GET     /works/*file                controllers.Assets.at(path="/public", file)

现在可以在

处访问其他资产
http://example.com/assets/RAW/abc.png
http://example.com/works/RAW/abc.png

您可以通过public解压缩生成的包,然后在{{{{}}下列出sbt dist的内容,确认其他资产在.../target/universal之后的jar下结束1}}以lib结尾的目录,例如:

-assets.jar

答案 1 :(得分:1)

好的,这就是我如何解决我的问题。 经过数小时(可能是数天)的研究,我通过在控制器中添加新功能>>> from tkinter import * >>> root = Tk() >>> button = Button(root, text='BUTTON') >>> button.pack()

来访问外部文件

我还必须设置路线。就我而言,     GET / download /:id /:name controllers.DownloadTask.download(id:String,name:String)

在客户端添加此url / routes信息后,它运行良好。