重写Rake任务和Rake任务依赖关系?

5

我正在使用一个构建系统,它定义了许多rake目标,包括这个:

task :test => [:all]

我认为这是不正确的,因此我定义了自己的rake任务,如下所示:

task :test => [:spec]
task :all => [:test, :build]
task :release => [:all]
task :default => [:release]

然而,当我尝试构建我的软件包时,现在出现了这个错误:
Circular dependency detected: TOP => default => all => test => all
Tasks: TOP => default => all => test
BUILD FAILED

我意识到定义一项rake任务(或rake任务的依赖项)只是将这些任务/依赖项附加到任务定义中!这让我疯了!为什么我不能按照自己的意愿重新定义我的rake任务?是否有办法覆盖一个rake任务和/或覆盖一个rake任务的依赖项?


我发现了这篇2008年的帖子,但它看起来像是一个hack!一定有更干净的方法来做到这一点,对吧?http://blog.jayfields.com/2008/02/rake-task-overwriting.html - Dasmowenator
1个回答

6

在定义任务之前,请使用以下命令:

Rake::Task[:test].clear

这个功能是在rake gem中实现的,文件位于lib/rake/task.rb。 你还可以看到它也支持clear_prerequisitesclear_actionsclear_commentsclear_argsclear会执行这四个操作)。

这个答案真的帮了我很多,特别是提到了额外的方法。在Rakefile中使用这些方法非常有用。 - akostadinov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接