有没有办法在不运行先决条件的情况下运行rake任务?

时间:2010-09-17 08:56:02

标签: ruby rake rake-task

我是否缺少命令行开关?

目前我不得不这样做:

#task :install => :build do
task :install do
end

2 个答案:

答案 0 :(得分:2)

我似乎通过简单地以“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 :(得分:1)

如果您定义了对任务的依赖关系,它将始终首先运行。但是,您可以单独创建任务,然后将它们与其他任务一起聚合,如下所示:

task :build do
  ... 
end

task :install do
  ...
end

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

然后您可以单独调用构建或安装任务,或者使用go任务运行序列。

rake build
rake install
rake go
实际上,我做了很多。它使我在我想要的时候运行单个步骤非常方便,并且在需要时有更大的步骤序列。