使用Rake :: PackageTask创建一个zip文件

大卫·沃茨

我正在尝试将一个zip文件打包到我的rake文件中,并且对Rake和ruby缺乏经验,因此我很难确定失败的原因。

这是我尝试过的:

def create_zip_file(targetDirectory, projectToZip)
    puts "target:" + targetDirectory
    puts "Zipping " + projectToZip
    semver_contents = get_contents_of('SEMVER')
    zipFileName = 'ProjectName.' + semver_contents
    puts zipFileName
    files_to_include = "../"+ projectToZip + "/bin/" + BUILD_CONFIG + "/**"
    puts "Including the following files: " + files_to_include
    Rake::PackageTask.new(zipFileName, semver_contents) do |p|
        p.need_zip = true
        p.package_files.include(files_to_include)
    end
end

我的任务调用如下所示:

exec(:package_zip) {create_zip_file DEPLOY_DIRECTORY, 'ProjectName'} 

我这样称呼它:

bundle exec rake package_zip

现在,我从中运行该命令的命令窗口列出了我在脚本中拥有的所有put语句的内容,因此我假设失败是在PackageTask任务内部发生的。

控制台中的错误输出如下所示:

Exec failed, see the build log for more details.
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/albacore-1.0.0/lib/albacore/support/failure.rb:12:in `fail_with_message'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/albacore-1.0.0/lib/albacore/exec.rb:18:in `execute'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/albacore-1.0.0/lib/albacore/support/createtask.rb:24:in `block in exec'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:240:in `call'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:240:in `block in execute'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:235:in `each'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:235:in `execute'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain'
C:/tools/ruby200/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:201:in `block in invoke_prerequisites'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:199:in `each'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:199:in `invoke_prerequisites'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:178:in `block in invoke_with_call_chain'
C:/tools/ruby200/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:165:in `invoke'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:150:in `invoke_task'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `block (2 levels) in top_level'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `each'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `block in top_level'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:115:in `run_with_threads'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:100:in `top_level'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:78:in `block in run'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:176:in `standard_exception_handling'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/lib/rake/application.rb:75:in `run'
C:/tools/ruby200/lib/ruby/gems/2.0.0/gems/rake-10.4.2/bin/rake:33:in `<top (required)>'
C:/tools/ruby200/bin/rake:23:in `load'
C:/tools/ruby200/bin/rake:23:in `<main>'
Tasks: TOP => package => package_zip

可能是我错过了一些显而易见的事情或做了一些愚蠢的事情,只是很难抓住它。

大卫·沃茨

在与办公室里的一些人交谈之后,尝试了许多与Pauls答案有关的事情,我终于找到了解决方案,那就是根本不使用打包任务。相反,我们使用rubyzip。

这就是我们最终得到的

def create_zip_file(targetDirectory, projectToZip)
    semver_contents = get_contents_of('SEMVER')
    zipFileName = "#{targetDirectory}/#{projectToZip}.#{semver_contents}.zip"
    filesToZip =  FileList["../#{projectToZip}/bin/#{BUILD_CONFIG}/**"]   
    Zip::File.open(zipFileName, Zip::File::CREATE) do |zipFile|
        filesToZip.each do |filename|
            zipFile.add(filename, filename)
        end
    end     
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Tempfile在Rails中创建一个zip文件

创建一个可以由PKZIP 2.50使用7-zip打开的.zip文件

创建一个zip文件,并使用maven将其添加到war文件中

Node.js:如何使用现有文件创建一个zip文件

创建多个csv文件并使用rails在一个zip归档文件中全部下载

如何使用“ docxtemplater”生成的多个docx文件创建一个zip文件?

如何创建使用Java一个非常具体的zip文件结构

使用System.IO.Packaging.Package在内存中创建一个ZIP文件

Grunt:使用当前日期创建一个zip文件(AAAA-MM-DD)

我无法使用php创建和存储一个zip文件

使用7zip提取多个文件并为每个文件创建一个文件夹

使用Lambda节点从S3上的文件在S3上创建一个zip文件

使用密码创建一个zip存档

使用 python 发送一个 zip 文件作为响应

在Ruby Rake中从文件的每一行创建一个数组

使用某些文件夹创建rake任务的命令

使用 Powershell 在最后一个 zip 文件中提取 zip 文件失败。

有没有一种方法可以使用API从Google驱动器上的多个文件创建一个zip文件?

使用SharpZipLib解压缩另一个zip内的zip文件

使用Python创建一个空的HTML文件?

在Maven中使用一个文件创建JAR

如何使用Ansible创建一个空文件?

使用一个命令创建密钥库文件

使用git创建一个war文件

使用python创建一个简单的XML文件

JavaFX 11:使用Gradle创建一个jar文件

使用Matlab创建一个新的空白.txt文件

使用一个命令创建并打开文件?

使用代码创建一个jmx文件