【发布时间】:2011-12-10 21:06:37
【问题描述】:
我经常想在运行其中一项标准任务之前进行一些自定义。我意识到我可以按照我想要的顺序创建执行现有任务的新任务,但是我发现这很麻烦,并且开发人员错过了他应该运行 my-compile 而不是 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")
但它不会在将编译输出打包到 jar 之前由 package-bin 自动执行。那么如何更改上述代码以在正确的时间运行?
更一般地说,我在哪里可以找到有关挂钩到其他任务(如编译)的信息,是否有一种通用方法可以确保在调用标准任务之前和之后运行您自己的任务?
【问题讨论】:
-
stackoverflow.com/q/12360974/1305344 的可能重复项。绝对需要合并。