【问题标题】:Sbt dist cause no access to unmanaged resources?Sbt dist 导致无法访问非托管资源?
【发布时间】:2023-03-05 04:03:01
【问题描述】:

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

我的问题在这里。

通过我的 sbt 运行,我可以通过添加访问非托管资源

unmanagedResourceDirectories in Assets += baseDirectory.value / "works"

到我的 build.sbt

但是,在 sbt dist 之后,相同的 url 不再有效,并向我发送 404 not found 错误。

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

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

这是我的路线仅供参考。

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

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

【问题讨论】:

  • 使用 sbt.version=0.13.16

标签: scala playframework sbt playback


【解决方案1】:

Additional asset directories通过unmanagedResourceDirectories指定

unmanagedResourceDirectories in Assets += baseDirectory.value / "works"

也将根据docspublic提供服务:

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

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

jar tf target/universal/play-scala-starter-example-1.0-SNAPSHOT/play-scala-starter-example.play-scala-starter-example-1.0-SNAPSHOT-assets.jar

【讨论】:

  • 从get/works/*file获取/works路由到获取/works/*file?
  • 已经有一个公共的默认资源文件夹。我是否也应该为其他路线提供相同的路径?这些文件位于works目录下。
  • @min 是的,因为 Play 会在 public 下聚合其他资产路径,例如 works,尽管事实上您将它放在单独的 works 目录中。
  • 我现在要去我的办公室,如果可行,会通知你。顺便谢谢你。 – 至少 38 分钟前
  • 这会导致与之前的资产发生冲突。 [错误]
【解决方案2】:

好的,这就是我解决问题的方法。 经过几个小时(可能是几天)的研究,我能够通过在控制器中添加一个新功能来访问外部文件,sendfile(new file(filename), inline=true)

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

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

【讨论】:

    猜你喜欢
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多