【问题标题】:Scala Play and Multi Project SBT BuildsScala Play 和多项目 SBT 构建
【发布时间】:2023-04-10 05:58:01
【问题描述】:

我创建了一个这样的 scala play 项目

activator new foo play-event-sourcing-starter

项目生成成功,我可以进去轻松编译和运行应用程序。

但是我想要的是我应该有一个多项目 sbt 构建。我用谷歌搜索了这个https://www.playframework.com/documentation/2.5.x/SBTSubProjects

但这与我想要的不一样,因为在这里他们作为根项目发挥作用。而我想要的是我有一个带有 build.sbt 文件的空根项目,然后是多个“对等”项目。其中之一就是玩耍。

所以我把步骤改为

mkdir -p LearnPlay/project
cd LearnPlay
activator new foo play-event-sourcing-starter

现在我进入 foo 并将 build.sbt 移动到 LearnPlay 目录。我还将build.propertiesplugins.sbt 文件移动到LearnPlay/project 文件夹中。

我编辑了 build.sbt 文件,使根项目变为

lazy val root = (project in file("foo")).enablePlugins(PlayScala)

但是现在 sbt 无法编译项目,也找不到任何 play framework 依赖项。

sbt.ResolveException: unresolved dependency: com.typesafe.play#play-server_2.10;2.5.9: not found
unresolved dependency: com.typesafe.play#play-netty-server_2.10;2.5.9: not found
unresolved dependency: com.typesafe.play#play-logback_2.10;2.5.9: not found
unresolved dependency: com.typesafe.play#play-test_2.10;2.5.9: not found
unresolved dependency: com.typesafe.play#play-omnidoc_2.10;2.5.9: not found
    at sbt.IvyActions$.sbt$IvyActions$$resolve(IvyActions.scala:313)

这些是我的 plugins.sbt 文件的内容。解析器定义正确,所以我不确定为什么在文件从子项目移动到根项目后 sbt 将无法找到依赖项。当文件位于 foo 项目的项目目录中时,它能够解决所有问题。

resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"

// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.9")

// web plugins
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.0")

【问题讨论】:

    标签: scala playframework-2.0 sbt


    【解决方案1】:

    给我一​​些想法的东西是什么问题:

    unresolved dependency: com.typesafe.play#play-server_2.10;2.5.9: not found
    

    sbt 尝试下载适用于 Scala 2.10 的播放服务器版本,而 Play 2.5.x 不存在该版本,你不感到惊讶吗? ,因为它已经超出生命周期。

    在我的项目中,如果我没有在 build.sbt 中指定 scala 版本或将其设置为 2.10,例如

    lazy val root = (project in file("foo")).settings(
      scalaVersion := "2.10.6",
    

    所以,我认为您只需添加 scalaVersion 参数并将其设置为 2.11.x2.12.x

    【讨论】:

    • 你是对的,但它有点令人惊讶,因为 scalaVersion 是在 sbt 项目中指定的,尽管不是直接在根项目本身上。它在根项目中时能够选择正确的 scala 版本......但在使用目录时却不能。
    猜你喜欢
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 2017-05-16
    • 2013-05-24
    • 2015-09-24
    • 2021-05-28
    相关资源
    最近更新 更多