Хорошо, у меня есть решение, которое на основе того, что сказал knoopx. Вот мой главный файл:
task :default do
FileList["*/**/rakefile*.rb"].each do |project|
# clear current tasks
Rake::Task.clear
#load tasks from this project
load project
if !Rake::Task.task_defined?(:default)
puts "No default task defined in #{project}, aborting!"
exit -1
else
dir = project.pathmap("%d")
Dir.chdir(dir) do
default_task = Rake::Task[:default]
default_task.invoke()
end
end
end
puts "Done building projects"
end
Каждый rakefile в подкаталоге должен содержать определение задачи по умолчанию.
Просто создайте новый Rakefile в корне вашего большого проекта и динамически загрузите свой подпроект Rakefiles
Dir.glob(File.join(File.dirname(__FILE__), '**', 'Rakefile')).each do |tasks|
load tasks
end