【问题标题】:Sbt run command for multiple projects多个项目的 Sbt 运行命令
【发布时间】:2019-09-06 04:36:51
【问题描述】:

我在一个目录中有多个项目,它们在 sbt 中聚合。我想在 build.sbt 中为 sbt 写一个任务,它会在每个项目中创建一些命令。

lazy val P1 = (project in file("P1")
lazy val P2 = (project in file("P2")
lazy val cleanEverywhere = taskKey[Unit]("Clean everywhere")

我应该如何编写这个 cleanEverywhere 任务来清理每个项目?

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    试试

    val cleanAll = taskKey[Unit]("Clean all projects")
    cleanAll := clean.all(ScopeFilter(inAnyProject)).value
    

    在哪里all

    在过滤器选择的所有范围内评估任务

    inAnyProject 沿项目轴选择所有scopes

    【讨论】:

      【解决方案2】:

      另一种方法是重组您的build.sbt 如下

      
          lazy val root = (project in file(".")).aggregate(p1, p2)
      
          lazy val p1 = project.in(file("p1"))
          lazy val p2 = project.in(file("p2"))
      
      

      这样,每当您运行sbt cleansbt testsbt compile 命令时,每个命令都会针对所有聚合项目执行,您无需创建cleanAll 任务

      如果你想要项目特定的命令,你可以像sbt p1/compile一样运行它

      【讨论】:

        猜你喜欢
        • 2018-12-04
        • 2014-09-11
        • 1970-01-01
        • 2016-11-05
        • 2011-12-02
        • 2017-01-30
        • 2018-08-08
        • 1970-01-01
        • 2015-02-05
        相关资源
        最近更新 更多