【问题标题】:Task to get executed after compile编译后执行的任务
【发布时间】:2015-09-01 09:21:36
【问题描述】:

我需要一个任务 myTask 在编译任务完成后执行。 我已经尝试了一些我在这个论坛上找到的东西:

  • 使用 dependsOn --> 仅当在 sbt 提示符上显式调用“sbt myTask”时才有效。但我需要 myTask 自动执行,无论何时执行编译。
  • 使用 triggeredBy --> myTask 永远不会被调用

反其道而行之就像一种魅力,尽管这不是我想要的。 我的意思是,做:

(在 Compile 中编译)

首先让 myTask 被执行,然后编译任务被执行。 但是我需要在编译结束后执行 myTask。

有什么想法吗?

非常感谢。

【问题讨论】:

  • triggeredBy(compile in Compile) 应该做你想做的事。你能提供一个 build.sbt 不起作用的例子吗?
  • 您能否提供您的build.sbt 的简化版本?

标签: dependencies sbt task


【解决方案1】:

这是修改编译任务以调用anotherTask 的一种方法。在您的build.sbt 中添加以下内容。

lazy val anotherTask = taskKey[Unit]("another task")

anotherTask := println("hello")

compile in Compile := {
    val compileAnalysis = (compile in Compile).value
    anotherTask.value
    compileAnalysis
}

【讨论】:

  • 马里奥斯,莉卡西娅。非常感谢您对此问题的跟进。这是我正在做的:lazy val compileScalastyle = TaskKey[Unit]("compileScalastyle") compileScalastyle := ScalastylePlugin.scalastyle.in(Compile).toTask("") compile in Compile := { val compileAnalysis = (compile in Compile).value compileScalastyle.value compileAnalysis } 按照马里奥的建议。但它仍然不起作用。 compileScalastyle 任务根本不会被调用。
  • 我也尝试过类似的东西: compileScalastyle := ScalastylePlugin.scalastyle.in(Compile).toTask("").triggeredBy (compile in Compile) 但根本没有成功。谢谢!
  • 嗯,我明白了。操作顺序重要吗?想要compile,然后是compileScalastyle?我确信我将执行这两项任务。但我认为 SBT 会同时运行它们(因此不会尊重顺序)。
  • 嗨马里奥斯。是的,顺序很重要。事实上,如果我这样做: (compile in Compile)
  • 当我使用初始方法(尝试先执行 compile 任务然后执行 compileScalastyle 任务的方法)时,仅运行编译阶段。非常感谢。
猜你喜欢
  • 2015-02-14
  • 2021-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
相关资源
最近更新 更多