Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Play和多项目SBT构建_Scala_Playframework 2.0_Sbt - Fatal编程技术网

Scala Play和多项目SBT构建

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

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

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.x2.12.x

您是对的,但这有点令人惊讶,因为scalaVersion是在sbt项目中指定的,尽管不是直接在根项目本身上指定的。它能够在根项目中选择正确的scala版本。。。但不是在它使用目录的时候。