如何将子项目罐放入我的拉链?

时间:2014-06-08 06:06:33

标签: ruby packaging buildr

我正在尝试在我的buildr构建文件中创建一个顶级zip,但jar文件似乎不会在最终的zip中结束。

项目结构有子项目:

desc 'Main project'
define 'hex' do
  #... omitting top-level config ...

  desc 'Hex Utilities'
  define 'util' do
    package :jar
  end

  #... omitting other sub-projects, they're all the same ...

  binaries_id = "#{id}-components-#{version}"
  package(:zip, :file => _("target/#{binaries_id}.zip")).path(binaries_id).tap do |path|
    path.include 'COPYING', 'COPYING.LESSER', 'CHANGELOG', 'README.markdown'

    %w{anno binary interpreter util viewer}.each do |proj|
      path.include project(proj).packages
    end
  end
end

我也尝试过:

      path.include project(proj).package(:jar)

明确只选择jar,虽然它是唯一的包,但是:

      path.include project(proj).packages.map{|p| "#{p}"}

将它们映射到字符串,因为我注意到所有其他路径.include行接受字符串并怀疑它可能不适用于包对象的数组,但这也不起作用。然后我最后的想法就是像其他包含的内容一样堵塞字符串:

      path.include "#{proj}/target/hex-#{proj}-#{version}.jar"

但即使这样也行不通,所以我不知道如何继续。

1 个答案:

答案 0 :(得分:0)

我似乎无法重现这种行为。使用最新版本的buildr,我创建了一个类似于

的构建文件
define 'foo' do
  project.version = '1.0'

  define 'bar' do
    package :jar
  end

  package(:zip, :file => _("somepath.zip")).path('somepath').tap do |path|
    path.include project('bar').packages
  end
end

运行" buildr clean package"然后" unzip -t somepath.zip"产生;

Archive:  somepath.zip
    testing: somepath/                OK
    testing: somepath/foo-bar-1.0.jar   OK
No errors detected in compressed data of somepath.zip.

这就是我所期望的。