SBT выполняет задачу другого проекта перед запуском задачи запуска

У меня есть два проекта в моем файле сборки SBT core и runner

lazy val core = (project in file("."))
lazy val runner = (project in file("runner"))
   .settings(mainClass in (Compile, run) := Some("Main"))

Я хочу, чтобы packageBin задача проекта core была выполнена, прежде чем я выполню run задачу моего runner проекта. Как я могу этого добиться?


person Ilya Kirillov    schedule 26.02.2018    source источник


Ответы (1)


Вот как я могу вызвать packageBin в проекте 1 при запуске проекта 2

lazy val commonSettings = Seq(
    organization := "com.abhi",
    scalaVersion := "2.12.4"
)

lazy val project1 = (project in file("project1")).settings(
    name := "project1",
).settings(commonSettings)

lazy val project2 = (project in file("project2")).settings(
  name := "project2",
  (run in Compile) := ((run in Compile) dependsOn(packageBin in (project1, Compile))).evaluated
).settings(commonSettings)

Теперь, если ты это сделаешь

set "project project2" run

вы увидите, что он сначала вызывает packageBin для project1

Кстати, я не эксперт по SBT, и синтаксис SBT меняется ежедневно. Поэтому я не уверен, что приведенный выше код является лучшим и самым последним способом сделать то, что вы хотите.

person Knows Not Much    schedule 26.02.2018