我创建了一个像这样的scala play项目
activator new foo play-event-sourcing-starter
项目已成功生成,我可以进入内部并轻松编译和运行应用程序。
然而我想要的是我应该有一个多项目的sbt构建。我用谷歌搜索了https://www.playframework.com/documentation/2.5.x/SBTSubProjects
但这与我想要的不一样,因为在这里他们扮演根项目。而我想要的是我有一个带有build.sbt文件的空根项目,然后是多个" peer"项目。其中一个是游戏。
所以我将步骤改为
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不能再编译项目了,它找不到任何播放框架依赖项。
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")
答案 0 :(得分:2)
能给我一些想法的东西是:
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.x 或 2.12.x