从其他子项目触发SBT装配

时间:2015-10-18 12:51:58

标签: scala playframework sbt sbt-assembly

我有一个包含3个子项目和sbt配置文件的根项目,没有别的。 2个主要子项目称为serverbackend,另一个称为common,并且是两个主要项目的依赖关系。 server是PlayFramework项目。 backed项目配置为生成程序集jar到server的资源目录。

正确生成jar并且服务器能够看到它,但是当编译assembly时我不知道如何从backend运行server任务(即我想要服务器依赖于backend.jar的组装。

/* [...] */

lazy val commonSettings = Seq(
  version := "0.1",
  organization := "org.example",
  scalaVersion := "2.11.7"
)

lazy val server = (project in file("server")).enablePlugins(PlayJava).settings(commonSettings: _*).settings(
  name := """example""",
  libraryDependencies ++= Seq(
    /* [...] */
  ),
  /* [...] */
  unmanagedResourceDirectories in Compile += { baseDirectory.value / "resources" }
).dependsOn(common)


lazy val backend = (project in file("backend")).settings(commonSettings: _*).settings(
  assemblyJarName in assembly := "backend.jar",
  assemblyOutputPath in assembly := server.base / "resources/backend.jar",
  libraryDependencies := Seq(

  )
).dependsOn(common)

lazy val common = (project in file("common")).settings(commonSettings: _*)

onLoad in Global := (Command.process("project server", _: State)) compose (onLoad in Global).value

1 个答案:

答案 0 :(得分:2)

感谢@pfn的评论,我得到了它的工作。我需要做的一件事是在服务器子项目设置中插入此行并将server更改为Compile,现在就是:

(compile in Compile) <<= (compile in Compile) dependsOn (assembly in backend)