【问题标题】:SBT execute task of other project before running run taskSBT 在运行运行任务之前执行其他项目的任务
【发布时间】:2018-02-26 15:27:40
【问题描述】:

我的 SBT 构建文件中有两个项目 corerunner

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 的语法每天都在变化。所以我不确定上面的代码是否是你想做的最好和最新的方式。

    【讨论】:

      猜你喜欢
      • 2019-04-17
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      相关资源
      最近更新 更多