Инициировать сборку SBT из другого подпроекта

У меня есть корневой проект, содержащий 3 подпроекта плюс файлы конфигурации sbt и ничего больше. 2 основных подпроекта называются server и backend, другой называется 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

person Magik6k    schedule 18.10.2015    source источник
comment
компилировать на сервере ‹‹= (компилировать на сервере) dependOn (сборка на сервере)   -  person pfn    schedule 18.10.2015


Ответы (1)


Благодаря комментарию @pfn у меня все заработало. Одна вещь, которую мне нужно было сделать, это вставить эту строку в настройки подпроекта сервера и изменить server на Compile, так что теперь:

(compile in Compile) <<= (compile in Compile) dependsOn (assembly in backend)
person Magik6k    schedule 18.10.2015