6

这是我的主要 rake 文件

subrake = 'subrake'

task :init => [subrake] do
  #call subrake.build
end

import subrake

我看到了有关上述步骤如何工作的文档,但我不知道如何在另一个 subrake 文件中调用任务。顺便说一句,这些任务可能与我的名称相同,这是一个问题吗?

4

2 回答 2

7

我想我的答案迟到了,但我刚才也有同样的问题。因此,该解决方案可能对某人有用。

瑞克文件.rb

subrake = 'subrake'

task :default => :init

task :init => ["#{subrake}:init"] do
  Rake::Task["#{subrake}:build"].invoke
end

require "#{Dir.pwd}/#{subrake}"

subrake.rb

namespace :subrake do

  desc "Init"
  task :init do
    puts 'Init called'
  end

  desc "Build"
  task :build do
    puts 'Build called'
  end

end

我想代码本身描述得很好,但我想停下来。当您调用require时,您应该为subrake文件提供完整路径(如在我的示例中)或“.\subrake”(如果它在工作目录中)

于 2011-04-29T14:24:52.767 回答
5

如果您有多个子 rake 文件,您可以执行类似的操作

Dir.glob('**/*.rake').each { |r| import r}

task :init => ["subrake:init"] 

你可以有一个看起来像这样的 sub.rake 文件

namespace :subrake do
  desc "Init"
  task :init do
    puts 'Init called'
  end
end

和另一个 foo.rake 文件

namespace :foorake do
  desc "Init"
  task :init do
    puts 'Init called'
  end
end

你可以像这样从 shell 调用 fooake:init

#rake foorake:init

或将其添加到您的主要任务中

task :init => ["subrake:init", "fforake:init"]
于 2011-07-02T12:52:27.273 回答