Как я пишу задачу zip Альбакора, которая включает только определенные папки и сами папки?

Я пробую к на молнии артефакты сборки граблей, с помощью ZipTask Альбакора. Решение, которое я создаю, имеет три проекта, которые имеют артефакты, которые должны быть заархивированы индивидуально, но только проект MVC ASP.NET будет упомянут здесь. Вот структура каталогов решения:

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 поле ко лжи (который не является зарегистрированным полем, но можно найти его в источнике). Это произвело 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 к (конечно), также быть исключенным из папки мусорного ведра.

Как я должен отредактировать какое-либо из вышеупомянутых заданий иметь только папки и файлы, которые я хочу в корне моей zip?

7
задан Anthony Mastrean 10 October 2012 в 16:20
поделиться