2011-11-09 50 views
1

我正在使用(並學習)Buildr來構建和打包我的項目。我想在EJB項目MANIFEST文件中自動生成類路徑屬性。目前我在做:Buildr Manifest從EAR包生成類路徑

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, ... 

包裝罐和修改艙單我創建打包在EAR的所有依賴性的類路徑屬性時,是否有可能在我的EJB項目構建?最重要的是,我還想排除一個或兩個依賴關係?

感謝

UPDATE

我嘗試了不同的方法,似乎更好(但仍可能有比我有什麼更好的方法)。我創建了一個握着我的所有工件我想在我耳邊包括,然後建立起來的類路徑字符串常量:

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) 

即使這個工程是我想如果任何人有一個是我將不勝感激這樣做

感謝tter方式,

回答

0

的爲EarTask構建文檔包含solution我相信:

所有指定的庫添加到EAR歸檔和類路徑manifiest項爲每個EAR組件修改。