有没有办法运行rake任务而不运行先决条件?

问题描述:

有没有我错过的命令行开关?有没有办法运行rake任务而不运行先决条件?

目前我在做这个:

#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 
+1

为什么不直接在任务定义的任务对象上调用.execute? invoke_without_prerequisites似乎只是一个别名 – Titas 2014-04-16 23:37:57

,如果你在一个任务定义依赖,它总是会先运行。然而,您可以单独创建任务,然后与另一项任务聚集在一起他们,就像这样:

task :build do 
    ... 
end 

task :install do 
    ... 
end 

task :go => [:build, :install] 

,然后你可以调用编译或独立安装任务,或运行与去任务序列。

rake build
rake install
rake go

我这个做了很多,其实。它使我可以非常方便地在需要时运行各个步骤,并且在需要时可以采用更大的步骤顺序。

+0

我想这是一个足够好的答案。我真的在寻找一个简单的命令行开关,但它跳过了依赖关系。 – AndrewVos 2010-09-18 14:08:52

+0

哦,我忘了说谢谢! – AndrewVos 2010-09-18 14:09:14