我正在尝试在我的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"
但即使这样也行不通,所以我不知道如何继续。
答案 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.
这就是我所期望的。