Scala Play和多项目SBT构建
我创建了一个类似这样的scala play项目Scala Play和多项目SBT构建,scala,playframework-2.0,sbt,Scala,Playframework 2.0,Sbt,我创建了一个类似这样的scala play项目 activator new foo play-event-sourcing-starter 该项目已成功生成,我可以进入其中,轻松编译和运行该应用程序 然而,我想要的是,我应该有一个多项目的sbt建设。我在谷歌上找到了这个 但这与我想要的不一样,因为在这里它们作为根项目发挥作用。然而,我想要的是,我有一个空的根项目和一个build.sbt文件,然后是多个“对等”项目。其中之一就是游戏 所以我把步骤改为 mkdir -p LearnPlay/pro
activator new foo play-event-sourcing-starter
该项目已成功生成,我可以进入其中,轻松编译和运行该应用程序
然而,我想要的是,我应该有一个多项目的sbt建设。我在谷歌上找到了这个
但这与我想要的不一样,因为在这里它们作为根项目发挥作用。然而,我想要的是,我有一个空的根项目和一个build.sbt文件,然后是多个“对等”项目。其中之一就是游戏
所以我把步骤改为
mkdir -p LearnPlay/project
cd LearnPlay
activator new foo play-event-sourcing-starter
现在我进入foo并将build.sbt
移动到LearnPlay目录。我还将build.properties
和plugins.sbt
文件移到了LearnPlay/project文件夹中
我编辑了build.sbt文件,以便根项目成为
lazy val root = (project in file("foo")).enablePlugins(PlayScala)
但是现在sbt无法再编译该项目,也找不到任何play框架依赖项
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")
让我有了一些想法的问题是:
unresolved dependency: com.typesafe.play#play-server_2.10;2.5.9: not found
sbt试图下载play server for Scala2.10版本,但play2.5.x版本并不存在,因为它已经超出了生命周期,您不感到惊讶吗
在我的项目中,如果我没有在build.sbt
中指定scala版本或将其设置为2.10,就会发生这种情况
lazy val root = (project in file("foo")).settings(
scalaVersion := "2.10.6",
因此,我认为您只需要添加
scalaVersion
参数,并将其设置为2.11.x或2.12.x您是对的,但这有点令人惊讶,因为scalaVersion是在sbt项目中指定的,尽管不是直接在根项目本身上指定的。它能够在根项目中选择正确的scala版本。。。但不是在它使用目录的时候。