使用startScriptForWarSettings在Heroku中运行

时间:2013-02-11 07:42:56

标签: heroku sbt xsbt-web-plugin

我正在尝试在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分发的目录?我查看了源代码,这是使用的'目标'变量,但我从未看到它的定义方式和位置。

1 个答案:

答案 0 :(得分:0)

我找到了两种可能的解决方案:

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

    运行
  2. 使用Heroku的部署:战争能力:https://devcenter.heroku.com/articles/war-deployment。这对我来说效果不好,因为它意味着现在所有东西都在一个我并不理解的环境中运行,Heroku很羞于支持这个。