我正在使用(和学习)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)
即使这适用于我想要的东西,如果有人有更好的方法,我会很感激
感谢,