1

我正在使用(和学习)Buildr 来构建和打包我的项目。我想在 EJB 项目清单文件中自动生成类路径属性。目前我正在做:

manifest_cp = compile.dependencies.map { |d| 
    "#{File.basename(d.name)}"
}.join(" ")

package(:jar).with :manifest=>manifest.merge('Class-Path'=>manifest_cp)

我是 Ruby 和 Buildr 的新手,所以可能有更好的方法来做到这一点。但是,我实际上希望能够生成我在 EAR 中定义和打包的 jar,而不是在我的 JAR 中获取编译依赖项。

我将我的耳朵项目打包为:

package(:ear).include(ANTLR, AOP_ALLIANCE, ...

打包 jar 并修改清单时,是否可以在我的 EJB 项目构建中创建 Class-Path 属性,并将所有依赖项打包在 EAR 中?最重要的是,我还想排除一两个依赖项?

谢谢

更新

我尝试了一种看起来更好的不同方法(但仍然可能有比我所拥有的更好的方法)。我创建了一个常量来保存我想要包含在我的 EAR 中的所有工件,然后构建类路径字符串:

EARLIBS = [ANTLR, AOP_ALLIANCE, ... ]
manifest_cp = Buildr.artifacts(EARLIBS).each { |artifact| artifact.invoke }.map{ |d| 
        "#{File.basename(d.to_s)}"
}.join(" ")

当我打包 EJB 时,我指定了上面创建的 manifest_cp:

package(:jar).with :manifest=>manifest.merge('Class-Path'=>manifest_cp)

当我打包 EAR 时,我引用了用所有工件声明的常量:

package(:ear).include(EARLIBS)

即使这适用于我想要的,如果有人有更好的方法,我将不胜感激

谢谢,

4

1 回答 1

0

EarTask 的构建文档包含我认为的解决方案:

所有指定的库都添加到 EAR 档案中,并且为每个 EAR 组件修改了 Class-Path 清单条目。

于 2012-02-27T03:34:31.673 回答