这是我的主要 rake 文件
subrake = 'subrake'
task :init => [subrake] do
#call subrake.build
end
import subrake
我看到了有关上述步骤如何工作的文档,但我不知道如何在另一个 subrake 文件中调用任务。顺便说一句,这些任务可能与我的名称相同,这是一个问题吗?
我想我的答案迟到了,但我刚才也有同样的问题。因此,该解决方案可能对某人有用。
瑞克文件.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”(如果它在工作目录中)
如果您有多个子 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"]