【问题标题】:How do I get subproject jars into my zip?如何将子项目 jar 放入我的 zip?
【发布时间】:2014-06-08 06:06:32
【问题描述】:

我正在尝试在我的 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}"}

将它们映射到字符串,因为我注意到所有其他 path.include 行都使用字符串,并怀疑它可能无法与包对象数组一起使用,但这也不起作用。然后我的最后一个想法就是像我对其余包括所做的那样卡在弦上:

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

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

【问题讨论】:

    标签: ruby packaging buildr


    【解决方案1】:

    我似乎无法重现该行为。在最新版本的 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.
    

    这是我所期望的。

    【讨论】:

      猜你喜欢
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-22
      相关资源
      最近更新 更多