Scala 将播放应用程序作为子项目嵌入sbt

Scala 将播放应用程序作为子项目嵌入sbt,scala,playframework,sbt,playframework-2.3,Scala,Playframework,Sbt,Playframework 2.3,我希望将Playframework作为子项目嵌入sbt中,并能够使其依赖于其他子项目。 原因是其他子项目是要在各种容器中运行的库,一个正在运行,另一个可能是spark 我能够通过dependsOn指令使子项目相互依赖,但这不适用于包含play webapp的子项目 我现在能做的最好的事情就是让PlayWebApp依赖本地发布的工件运行,但这并不令人满意。因为我想让子项目的作者意识到一个改变会破坏webapp 如果我删除web子项目上的.enablePlugins(play.PlayScala),

我希望将Playframework作为子项目嵌入sbt中,并能够使其依赖于其他子项目。 原因是其他子项目是要在各种容器中运行的库,一个正在运行,另一个可能是spark

我能够通过dependsOn指令使子项目相互依赖,但这不适用于包含play webapp的子项目

我现在能做的最好的事情就是让PlayWebApp依赖本地发布的工件运行,但这并不令人满意。因为我想让子项目的作者意识到一个改变会破坏webapp

如果我删除web子项目上的.enablePlugins(play.PlayScala),则依赖项将得到解决,并且一切都可以正常编译,但我不能在webapp子项目中使用play sbt插件操作,例如run。当我尝试sbt时,找不到主类

简而言之,我想编译根项目中的所有子项目,进入web子项目来编译这个级别的聚合项目,并在此子项目上使用run、universal:packageZipTarball操作

我使用的是播放2.3.10和sbt 0.13.8

谢谢你的帮助, 约汉

下面是sbt项目根目录下的Build.scala文件

import sbt._
import Keys._

object RootBuild extends Build {
    lazy val root = Project(id = "root", base = file("."))
                                        .aggregate(sub1, sub2, web)
    lazy val sub1 = Project(id = "sub1", base = file("sub1"))

    lazy val sub2 = Project(id = "sub2", base = file("sub2")).dependsOn(sub1)

    lazy val web = Project(id = "web", base = file("web"))
                                .aggregate(sub1, sub2)
                                .dependsOn(sub1, sub2)
                                .enablePlugins(play.PlayScala)

    resolvers += "Typesafe repo" at "http://repo.typesafe.com/typesafe/releases/"
}
然后在web文件夹中创建build.sbt文件

name := "web"

version := "0.1-SNAPSHOT"

scalaVersion := "2.10.5"

libraryDependencies ++= Seq(
    ws,
    "com.chuusai" %% "shapeless" % "2.2.5",
    compilerPlugin("org.scalamacros" % "paradise" % "2.0.1" cross CrossVersion.full)
)