有没有办法运行rake任务而不运行先决条件?
答
我似乎已经通过简单地添加格式为“taskname_no_prerequisites”的额外任务来解决此问题。因此,例如在下面的代码中执行“rake install_no_prerequisites”不会导致“build”被执行。
desc "Build"
task :build do
puts "BUILDING..."
end
desc "Install"
task :install => :build do
puts "INSTALLING..."
end
Rake::Task::tasks.each do |task|
desc "#{task} without prerequisites"
task "#{task}_no_prerequisites".to_sym do
task.invoke_without_prerequisites
end
end
module Rake
class Task
def invoke_without_prerequisites
execute
end
end
end
答
,如果你在一个任务定义依赖,它总是会先运行。然而,您可以单独创建任务,然后与另一项任务聚集在一起他们,就像这样:
task :build do
...
end
task :install do
...
end
task :go => [:build, :install]
,然后你可以调用编译或独立安装任务,或运行与去任务序列。
rake build
rake install
rake go
我这个做了很多,其实。它使我可以非常方便地在需要时运行各个步骤,并且在需要时可以采用更大的步骤顺序。
为什么不直接在任务定义的任务对象上调用.execute? invoke_without_prerequisites似乎只是一个别名 – Titas 2014-04-16 23:37:57