如何将缺少的 SNAPSHOT 依赖项添加到 Heroku?

How to add missing SNAPSHOT dependency to Heroku?

我有一个部署到 Heroku 的 Scala Play 2.7.x 应用程序。但是,由于缺少依赖项 "com.github.tototoshi" %% "play-joda-routes-binder" % "1.3.1-SNAPSHOT",构建失败了,这是正确的,因为这是我在本地构建的。如何让 Heroku 可以使用这个缺失的依赖项?

我需要的依赖项是这个 https://github.com/tototoshi/play-joda-routes-binder 但它有一个错误,我在这里修复了 https://github.com/tototoshi/play-joda-routes-binder/pull/6。然而,该项目的作者似乎已经离开几个月了。我可以在本地构建我的 PR,但我如何将它添加到 Heroku 以使我的项目运行?

可以将编译好的jar放到项目的子文件夹中,例如:/lib。 Sbt 会自动在这个目录中寻找 jars。如果您想将其配置为其他内容,您可以定义密钥 unmanagedBase:

unmanagedBase := baseDirectory.value / "custom_lib"

这里有更多关于 sbt 库管理的文档:https://www.scala-sbt.org/1.x/docs/Library-Dependencies.html

playframework 也记录了这一点,但基本上是一样的: https://www.playframework.com/documentation/2.7.1/SBTDependencies

另一种解决方案是不使用连接到 Github 的自动部署,而是使用 SBT Heroku CLI,然后在本地构建/部署并简单地将二进制工件上传到 Heroku,如下所示:

sbt stage deployHeroku
heroku open --app myapp

将以下两个条目添加到 project/plugins.sbt 文件后(截至今天的最新版本):

addSbtPlugin("com.heroku" % "sbt-heroku" % "2.1.2")

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.4.1")