buildr能否包含子项目的结果';当前项目中的s包';谁的资源?

buildr能否包含子项目的结果';当前项目中的s包';谁的资源?,build,buildr,Build,Buildr,如果我想将子项目的jar打包到主jar中,我可以做这样的事情: define 'library' do project.version = '0.1' define 'subproject' do package :jar end package(:jar).include(project('subproject').package(:jar), as: 'org/acme/library/subproject.jar'

如果我想将子项目的jar打包到主jar中,我可以做这样的事情:

define 'library' do
  project.version = '0.1'

  define 'subproject' do
    package :jar
  end

  package(:jar).include(project('subproject').package(:jar),
                        as: 'org/acme/library/subproject.jar')
end
这将在需要打包到主jar之前,在子项目中懒洋洋地构建jar,并且一切正常

问题是,我的测试也希望使用jar文件,所以它的逻辑位置在参考资料中。所以我想知道我应该如何将另一个项目构建的内容复制到这个项目的资源中。文档中明显缺少这方面的示例,主要关注如何将一个文件目录复制到另一个目录

这就是我所尝试的:

 resources.from(project('subproject').package(:jar),
                as: 'org/acme/library/subproject.jar')
它失败了:

RuntimeError : Source directory $HOME/Documents/library/subproject/target/library-subproject-0.1.jar doesn't exist
$HOME/Documents/library/buildfile:38:in `block in <top (required)>'
我不喜欢这样,因为它仍然急切地评估目录,这迫使我在运行任何构建之前很久就创建该目录。这意味着即使在我运行
buildr clean
时,它也在创建这个目录。恶心


那么正确的方法是什么呢?

我们通常的做法是不使用顶级项目创建任何包,而是使用子项目来定义这两个包。i、 e

define 'myproject'
  ...
  define 'model' do
    ...
    package(:jar)
  end

  define 'server' do
    ...
    package(:war) do |war|
      war.libs.clear
      war.libs << project('model').package(:jar)
    end
  end
end
定义“myproject”
...
定义“模型”做什么
...
包(:jar)
结束
定义“服务器”do
...
包(:war)do | war|
war.libs.clear

实际上,war.libs打包到包中已经很好了,问题是我想打包到资源构建目标中。这个问题表明,我得到了工作,以及,但使用的黑客似乎不自然。也就是说,为最终包使用子项目看起来会整理构建文件,所以我想我还是会这样做的。:)
define 'myproject'
  ...
  define 'model' do
    ...
    package(:jar)
  end

  define 'server' do
    ...
    package(:war) do |war|
      war.libs.clear
      war.libs << project('model').package(:jar)
    end
  end
end