是否可以覆盖或修改内置SBT任务(如编译)以依赖我自己的Build.scala中的自定义任务?重写例如直接"编译"是不可能的,因为它已经用lazy val定义,因此引用super.compile会发出编译器错误"super可能不会用于惰性值".
Jam*_*ore 18
更新:请参阅arussell84的答案以获得现代化的方法
你应该能够这样做:
在.sbt文件中:
compile <<= (compile in Compile) dependsOn jruby
Run Code Online (Sandbox Code Playgroud)
其中jruby是您在project/something.scala文件中定义的任务键:
val jruby = TaskKey[Unit]("jruby", "run a jruby file")
Run Code Online (Sandbox Code Playgroud)
此外,这不是您的问题的一部分,但您可以只调用常规的Scala代码:
compile <<= (compile in Compile) map { result =>
println("in compile, something")
result
}
Run Code Online (Sandbox Code Playgroud)
回复自我:http://code.google.com/p/simple-build-tool/wiki/ProjectDefinitionExamples#Insert_Task_Dependency告诉答案:
如果您使用的是旧版0.7.x SBT版本,则可以执行以下操作:
import sbt._
class SampleProject(info: ProjectInfo) extends DefaultProject(info) {
lazy val printAction = task { print("Testing...") }
override def compileAction = super.compileAction dependsOn(printAction)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10656 次 |
| 最近记录: |