我想将Playframework作为子项目嵌入到sbt中,并且能够使其依赖于其他子项目。 原因是其他子项目是在各种容器中运行的库,一个是另一个可能是火花的。
我能够通过dependsOn指令使子项目相互依赖,但这对包含play webapp的子项目不起作用。
我现在能做的最好的事情就是让Play webapp依赖于本地发布的工件而运行,但这并不令人满意。因为我希望子项目编写者意识到更改会破坏webapp。
如果我删除web子项目中的.enablePlugins(play.PlayScala)依赖关系已解决且所有内容编译正常但我无法在webapp子项目中使用play sbt插件操作,例如run。当我尝试sbt时,找不到主要课程。
简而言之,我想从根项目中编译所有子项目,进入web子项目以编译此级别的聚合项目,并在此子项目上使用run,universal:packageZipTarball操作。
我正在使用游戏2.3.10和sbt 0.13.8
感谢您的帮助, Yohann。
这是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)
)