Недавно я начал использовать Rake для создания некоторых из моих (нерублевых) пакетов. Рейк хороший, но то, что я нашел пропавшим, - это способ сделать иерархические сборки (агрегированные Rakefiles в подкаталогах). Поскольку это обычная функция в большинстве других инструментов сборки, мне интересно, есть ли у кого-то, более знакомого с Rake, хорошее решение.Как сделать иерархическую сборку с помощью рейка?
ответ
Я бы порекомендовал Buildr для выполнения задач, не связанных с Ruby. Он основан на Rake (сидит поверх него, позволяя использовать все возможности Rake), но лучше подходит семантике скомпилированных языков. Он также поддерживает иерархические сборки.
Я тоже не мог понять, как это сделать. Я закончил:
SUBDIR = "subdir"
task :subtask => SRC_FILES do |t|
chdir(SUBDIR) do
system("rake")
end
end
task :subtaskclean do |t|
chdir(SUBDIR) do
system("rake clean")
end
end
task :subtaskclean do |t|
chdir(SUBDIR) do
system("rake clobber")
end
end
task :default => [:maintask, :subtask]
task :clean => :subtaskclean
task :clobber => :subtaskclobber
Kinda сосет. На самом деле, действительно отстой. Я мытая документы и не смог найти эквивалент <antcall>
Я уверен, что так как это все Руби и я едва знаю Руби есть некоторые супер очевидный способ require
ИНГ его или что-то.
Buildr использует понятие областей в сочетании с названием проектов.
Rake.application.current_scope должен быть точкой входа, чтобы узнать, как с ними работать. Надеюсь, это поможет.
Исправление я использовал, чтобы обойти это:
Dir.chdir(File.dirname(Rake.application.rakefile))
Это утверждение должно выполняться на каждом уровне иерархии для корня, за исключением, в начале каждого rakefile. Сокращенный пример того, как это работает на практике:
/rakefile:
task :default do
sh "rake -f component/rakefile"
end
/Компонент/rakefile
Dir.chdir(File.dirname(Rake.application.rakefile))
task :binary => OBJECTS do
sh "gcC#{SOURCES} -Iinclude -o #{TARGET}"
end
Как я новичок грабли я не уверен, что это чистейшая метод его решения, но именно так я в конечном итоге получил его на работу.
- 1. Сделать иерархическую диаграмму Вертикальная
- 2. Как разобрать аргументы рейка с помощью OptionParser
- 3. Как выполнить задачу рейка с помощью mina?
- 4. Как сделать сборку командной строки с помощью Delphi 7?
- 5. Как создать иерархическую структуру, как категории WordPress с помощью PHP
- 6. Phonegap Как сделать сборку андроида
- 7. Как сделать сборку не .NET
- 8. Как создать иерархическую древовидную структуру Json с помощью java-программы
- 9. Как показать иерархическую структуру данных с помощью RecycleView?
- 10. Планирование задач рейка с помощью Sinatra
- 11. Как скомпилировать сборку файлов с помощью vs2008?
- 12. Как сделать иерархическую кластеризацию для большой матрицы подобия
- 13. Возможно ли сделать сборку из-источника с помощью bjam?
- 14. Как создать полную сборку с помощью Gulp?
- 15. Ruby ExtensionTask: Как сделать его зависимым от другой задачи рейка?
- 16. Сделать сборку OpenCV с поддержкой Python 3
- 17. Есть ли способ сделать сборку nant с помощью .NET 4.5.1?
- 18. Как обеспечить «иерархическую» схему URI?
- 19. Как сгенерировать файл миграции рейка с помощью json
- 20. ошибка с повышением рейка
- 21. Использование рейка с Rufus
- 22. Как включить тихую сборку с помощью automake?
- 23. Как создать сборку с помощью Appcelerator Studio
- 24. Как подписать сборку с помощью devenv.com
- 25. Как создать ежедневную сборку с помощью buildbot?
- 26. Как создать сборку с помощью Sublime Text?
- 27. Как испустить сборку Silverlight с помощью AssemblyBuilder
- 28. PHP как перебирать иерархическую плоскость?
- 29. рейка задача с простым интерфейсом
- 30. Запуск задачи рейка с формой
Требование рубина не работает, так как оно не меняет рабочий каталог. Я не смог найти никаких примитивов ruby, которые поддерживают это рекурсивное поведение. – 2015-05-01 22:37:49