Я пытаюсь заархивировать артефакты сборки рейка, используя ZipTask от Альбакора. Решение, которое я создаю, состоит из трех проектов, в которых есть артефакты, которые необходимо заархивировать по отдельности, но здесь будет упомянут только проект ASP.NET MVC. Вот структура каталогов решения:
rakefile.rb
solution.sln
src/
(other projects that are not relevant)
website/
(various folders I don't want included in the artifacts)
bin/
Content/
Scripts/
Views/
Default.aspx
Global.asax
web.config
Сначала я написал это задание:
website_directory = File.join '.', 'src', 'website'
website_project_name = 'website'
zip :zip => [ :run_unit_tests, :less ] do |zip|
zip.directories_to_zip = [ 'bin', 'Content', 'Scripts', 'Views' ].map{ |folder| File.join website_directory, folder }
zip.additional_files = [ 'Default.aspx', 'favicon.ico', 'Global.asax', 'web.config'].map{ |file| File.join website_directory, file }
zip.output_file = get_output_file_name
zip.output_path = get_artifacts_output_path website_project_name
end
Проблема в том, что результатом этой задачи является zip-файл, содержащий содержимое этих папок, а не сами папки, что явно нежелательно.
Затем я попытался переключить поле flatten_zip
на false (что не является документированным полем, но вы можете найти его в source ). Это привело к созданию zip-файла, содержащего указанные выше папки, но в нижней части всей иерархии папок ./src/website/
. Я хочу, чтобы указанные выше папки находились в корне zip-файла, так что это тоже не работает.
Итак, мой следующий снимок был с использованием exclusions
, который также не задокументирован:
zip :zip => [ :run_unit_tests, :less ] do |zip|
zip.directories_to_zip website_directory
zip.exclusions = [ /.git/, /.+\.cs/, /App_Data/, /Attributes/, /AutoMapper/, /Controllers/, /Diagrams/, /Extensions/, /Filters/, /Helpers/, /Models/, /obj/, /Properties/, /StructureMap/, /Templates/, /CompTracker.Web.csproj/, /Default.aspx.cs/, /Global.asax.cs/, /Publish.xml/, /pdb/ ]
zip.output_file = get_output_file_name
zip.output_path = get_artifacts_output_path website_project_name
end
Это сработало для меня, но когда я недавно добавил /AutoMapper/
и /StructureMap/
в массив exclusions
, это также привело к тому, что AutoMapper.dll и StructureMap.dll (конечно) также были исключены из папки bin.
Как мне отредактировать любую из вышеперечисленных задач, чтобы в корне моего zip-файла были только нужные папки и файлы?