gpt4 book ai didi

scala - 在标准任务之前/之后自动运行自定义任务

转载 作者:行者123 更新时间:2023-12-03 08:41:12 26 4
gpt4 key购买 nike

我经常想在运行其中一项标准任务之前进行一些自定义。我意识到我可以按照我想要的顺序创建执行现有任务的新任务,但是我发现这很麻烦,并且开发人员错过了他应该运行 my-compile 而不是 compile 的机会很大并且导致难以修复错误.

所以我想定义一个自定义任务(比如 prepare-app )并将其注入(inject)现有任务的依赖树(比如 package-bin ),这样每次有人调用 package-bin 我的自定义任务是在它前面跑。

我试着这样做

  def mySettings = {
inConfig(Compile)(Seq(prepareAppTask <<= packageBin in Compile map { (pkg: File) =>
// fiddle with the /target folder before package-bin makes it into a jar
})) ++
Seq(name := "my project", version := "1.0")
}

lazy val prepareAppTask = TaskKey[Unit]("prepare-app")

但它不会在将编译输出打包到 jar 之前由 package-bin 自动执行。那么如何更改上述代码以在正确的时间运行?

更一般地说,我在哪里可以找到有关 Hook 到其他任务(如编译)的信息,是否有一种通用方法可以确保在调用标准任务之前和之后运行您自己的任务?

最佳答案

Tasks 的 SBT 文档记录了扩展现有任务。 (查看 Modifying an Existing Task 部分)。

像这样的东西:

compile in Compile <<= (compile in Compile) map { _ => 
// what you want to happen after compile goes here
}

实际上,还有另一种方法 - 将您的任务定义为依赖于 compile
prepareAppTask := (whatever you want to do) dependsOn compile

然后修改 packageBin 以依赖于:
packageBin <<= packageBin dependsOn prepareAppTask

(以上所有内容均未经测试,但我希望一般推力应该有效)。

关于scala - 在标准任务之前/之后自动运行自定义任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7820939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com