gpt4 book ai didi

scala - 编译后 SBT 应用任务

转载 作者:行者123 更新时间:2023-12-03 14:58:25 34 4
gpt4 key购买 nike

我能够在编译之前自动执行任务:

compile in Compile <<= (compile in Compile).dependsOn(myTask)

我如何做同样的但在编译之后?

我知道我可以做到:
compile in Compile <<= (compile in Compile) map{x=>
// post-compile work
doFoo()
x
}

执行任意Scala代码,但我需要在编译事件发生时自动执行目标任务本身

做类似的事情:
val foo = TaskKey[Unit]("foo", "...")
val fooTask = foo <<= scalaInstance map {si =>
...
} dependsOn(compile in Compile)

如果我从 sbt> 提示符输入“foo”就可以了;即任务在编译后执行,但目标是钩入编译任务本身,因此无论何时发生编译,编译完成后都会自动调用 foo 任务。

这是可能的,还是我以错误的方式处理问题以连接到内置编译任务?

最佳答案

一般来说,有一些任务取决于您的任务。

compile被用来表示“为 Grunt 编译和设置”,然后创建一个 prepareGrunt依赖于 compile 的任务和 myTask并运行它。

myTask应该在项目的类和资源被其他东西使用之前运行,然后使它成为 exportedProducts 的依赖项.类似 run 的任务和 test并且依赖项目中的任务将从该任务中获取导出的类路径条目。

“编译后运行”的危险在于 myTask不会在实际需要它的任务之前运行。有triggeredBy方法在 Initialize[Task[T]] ,但它很容易被滥用,应该只在已知任务输出的情况下使用,只有在所有任务执行后才使用。

关于scala - 编译后 SBT 应用任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17045860/

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