0

我正在尝试在 Heroku 下运行 SBT Web 应用程序。我已经能够通过使用此处描述的 JettyLauncher 脚本来做到这一点http://scalatra.org/2.2/guides/deployment/heroku.html 但是,我真的很想从 WAR 工件而不是我的 src/ 运行main/webapp 目录,因为在构建中发生了一些后续处理。

但是,当我尝试使用 StartScriptPlugin.startScriptForWarSettings 时,我的应用程序在启动时出现错误,因为它尝试将 WAR 文件复制到 /tmp/build_26wd72c43fv12/target/jetty-distribution-7.3.1.v20110307/webapps

阅读此内容:https : //devcenter.heroku.com/articles/read-only-filesystem 清楚地解释了问题是因为当该脚本由 web dyno 运行时,它无法写入 /tmp。

所以我的问题是:有没有办法更改 sbt-start-scriptplugin 中用于 Jetty 分发的目录?我查看了源代码,使用的是这个“目标”变量,但我从来没有看到它是如何定义的或在哪里定义的。

4

1 回答 1

0

我发现了两种可能的解决方案:

  1. 在 Jetty 启动器中,您将上下文设置为直接转到使用context.setWar("target/scala-2.10/mywar_2.10-0.0.1.war"). 在这种情况下,您仍然使用嵌入式 Jetty 和 StartScriptPlugin.startScriptForClassesSettings 键运行,但它从 WAR 而不是

  2. 使用 Heroku 的 deploy:war 功能:https ://devcenter.heroku.com/articles/war-deployment 。这对我来说效果不佳,因为这意味着现在一切都在我不太了解的环境中运行,而 Heroku 不愿支持这一点。

于 2013-02-11T15:58:16.590 回答