Buildr Manifest从EAR包生成类路径

时间:2011-11-09 16:03:34

标签: buildr

我正在使用(和学习)Buildr来构建和打包我的项目。我想在EJB项目MANIFEST文件中自动生成class-path属性。目前我在做:

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项目构建是否可行?我创建了包含EAR中所有依赖项的Class-Path属性?最重要的是,我还想排除一两个依赖项?

感谢

更新

我尝试了一种看起来更好的不同方法(但可能还有比我更好的方法)。我创建了一个常量,它保​​存了我想要包含在我的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)

即使这适用于我想要的东西,如果有人有更好的方法,我会很感激

感谢,

1 个答案:

答案 0 :(得分:0)

EarTask的构建文档包含我相信的solution

  

所有指定的库都被添加到EAR存档中,并且为每个EAR组件修改了Class-Path最明显的条目。