是否有我缺少的命令行开关?
目前我不得不这样做:
#task :install => :build do
task :install do
end
我似乎通过简单地以“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]
然后您可以独立调用构建或安装任务,或使用 go 任务运行序列。
耙建
耙式安装
耙去
实际上,我经常这样做。它使我可以在需要时非常方便地运行单个步骤,并在需要时拥有更大的步骤序列。