覆盖 rake 任务和 rake 任务依赖性?

Das*_*tor 5 ruby rake circular-dependency rakefile rake-task

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

task :test => [:all]
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎是不正确的,所以我定义了自己的 rake 任务,如下所示:

task :test => [:spec]
task :all => [:test, :build]
task :release => [:all]
task :default => [:release]
Run Code Online (Sandbox Code Playgroud)

但是,现在当我尝试构建我的包时遇到此错误:

Circular dependency detected: TOP => default => all => test => all
Tasks: TOP => default => all => test
BUILD FAILED
Run Code Online (Sandbox Code Playgroud)

我开始意识到,定义 rake 任务(或 rake 任务的依赖项)只是将这些任务/依赖项附加到任务定义中!这真让我抓狂!为什么我不能按照我认为合适的方式重新定义我的 rake 任务?!有没有办法覆盖 rake 任务和/或覆盖 rake 任务的依赖项?

cli*_*ath 6

在定义任务之前使用它:

Rake::Task[:test].clear
Run Code Online (Sandbox Code Playgroud)

这是在 rake gem 中实现的,文件 lib/rake/task.rb 您可以看到它还支持clear_precessionsclear_actionsclear_commentsclear_argsclear可以完成所有四件事)。