如何复制任务,例如编译?

时间:2014-06-11 14:29:29

标签: sbt

出于各种原因,我有一个由enhance触发的任务compile,因为我们需要它来运行我们的代码而我不希望程序员只是编译而忘记增强。

这样可以正常工作,但在某些情况下,尤其是调试增强器时,我需要compileOnly任务执行与compile完全相同的操作但没有附加触发器。

有没有办法克隆"编译?我试过了:

object EnhancerBuild extends Build {
  lazy val compileOnly = taskKey[Analysis]("compileOnly") in Compile

  lazy val root = Project("root", file(".")) settings(  
      compileOnly <<= compileTask
   )
}

但它找不到compilerReporter&amp; compileInputs设置。

1 个答案:

答案 0 :(得分:2)

除非我弄错了,否则你真的需要另外一个模仿sbt中许多人的任务,例如: compile。如果是,请参阅build.sbt

中的以下内容
lazy val compileOnly = taskKey[sbt.inc.Analysis]("compileOnly")

compileOnly <<= (compile in Compile)

根据定义,compileOnly取决于compile范围内的Compile

> inspect compileOnly
[info] Task: sbt.inc.Analysis
[info] Description:
[info]  compileOnly
[info] Provided by:
[info]  {file:/C:/dev/sandbox/compile-copy/}compile-copy/*:compileOnly
[info] Defined at:
[info]  C:\dev\sandbox\compile-copy\build.sbt:3
[info] Dependencies:
[info]  compile:compile
[info] Delegates:
[info]  *:compileOnly
[info]  {.}/*:compileOnly
[info]  */*:compileOnly