我创建了一个阶发挥项目这样斯卡拉播放和多项目SBT构建
activator new foo play-event-sourcing-starter
已成功生成项目,我可以进去,轻松地编译和运行应用程序。
但是我想要的是我应该有一个多项目sbt构建。我GOOGLE了,发现这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.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")
你是正确的,但添加
scalaVersion
参数和设置的东西它是一个有点令人惊讶,因为scalaVersion是在sbt项目中指定,但不直接在根项目本身上指定。当它在根项目中时,它能够选择正确的scala版本......但不能在使用该目录时使用。 –你能完整展示你的build.sbt吗? – Mysterion