【问题标题】:SBT execute task of other project before running run taskSBT 在运行运行任务之前执行其他项目的任务
【发布时间】:2018-02-26 15:27:40
【问题描述】:
我的 SBT 构建文件中有两个项目 core 和 runner
lazy val core = (project in file("."))
lazy val runner = (project in file("runner"))
.settings(mainClass in (Compile, run) := Some("Main"))
我希望在执行我的runner 项目的run 任务之前执行core 项目的packageBin 任务。我怎样才能做到这一点?
【问题讨论】:
标签:
scala
sbt
build-tools
【解决方案1】:
当项目 2 运行时,我如何在项目 1 上调用 packageBin
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
你会看到它首先在 project1 上调用 packageBin
顺便说一句,我不是 SBT 专家,SBT 的语法每天都在变化。所以我不确定上面的代码是否是你想做的最好和最新的方式。