我经常想在运行其中一个标准任务之前进行一些自定义.我意识到我可以按照我想要的顺序创建执行现有任务的新任务,但我发现这很麻烦,并且开发人员错过了他应该运行my-compile而不是编译的可能性很大并且导致很难修复错误.
所以我想定义一个自定义任务(比如prepare-app)并将其注入现有任务的依赖树(比如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")
Run Code Online (Sandbox Code Playgroud)
但是在将编译输出打包到jar之前,它不是由package-bin自动执行的.那么如何更改上面的代码才能在合适的时间运行?
更一般地说,我在哪里可以找到有关挂钩到其他任务(如编译)的信息,是否有一般方法可以确保在调用标准任务之前和之后运行自己的任务?