2012-09-19 52 views
1

看過各種建議之後,我仍然看不到任何成功的ear文件的maven策略。maven耳包裝策略,建築依賴項目

我有這樣的結構:

父的pom.xml: ...

<modules> 
     <module>MyProject-ear</module> 
     <module>MyProject-ejb</module> 
     <module>MyProject-war</module> 
    </modules> 

(EJB /戰爭/耳朵都以此爲母)

我使用maven- war-plugin/maven-ejb-plugin/maven-ear-plugin。

EAR模塊具有ejb/war項目作爲依賴關係。

現在,如果我想建立我的耳朵,我需要先建立戰爭。如果我不這樣做,它只是不是最新的版本。

有沒有更好的方法?

編輯:僅供參考,開通了NetBeans錯誤有一個有效的解決方案來運行我的項目只需點擊「運行」:http://netbeans.org/bugzilla/show_bug.cgi?id=218807

+0

模塊的順序不正確。將戰爭模塊放置在頂部,以便在耳朵模塊之前構建,該模塊應該是列表中的最後一個。如果你然後建立你的父母耳文件將是正確的。如果您只構建耳機模塊,則會遇到不符合最新.war依賴關係的問題。 – wemu

+0

@wemu僅當沒有其他方式確定構建順序時,模塊的順序才相關。在他的例子中,耳朵依賴於戰爭,這將導致正確的構建順序。 http://maven.apache.org/guides/mini/guide-multiple-modules.html – maba

+1

我不這麼認爲。耳模塊將看到一個依賴關係,並嘗試在本地存儲庫中解析它,然後在遠程中解析它。依賴關係不會告訴模塊的構建位置。如果有一個CI構建,確保.war是最新的,不會成爲問題,但我不會反轉模塊構建順序。我經常看到這種行爲,往往不相信鏈接狀態是完全正確的。最好是安全的比對不起:) – wemu

回答

0

這看起來不錯。我自己使用相同的佈局。

當構建你就必須被放置在頂部POM和運行mvn install。您不必走下層次結構並首先構建war

+0

在Netbeans中,爲了運行該項目,我選擇了EAR模塊並運行它。爲了確保它是最新的,我總是必須首先建立戰爭(或父母),而我不喜歡那樣。 Netbeans在選擇耳機模塊時是錯誤的,在這種情況下,我會提交一個錯誤。或@ wemu關於申報順序的評論是正確的,我可以很容易地糾正它。 – ymajoros

+0

@ymajoros這是maven反應堆構建的一個很好的總結:http://www.sonatype.com/people/2009/10/maven-tips-and-tricks-advanced-reactor-options/ – maba

+0

好的,但我會就像能夠在Netbeans上運行我的耳項目中的「運行」一樣,並且無需構建父pom就可以運行它。這不可能嗎? – ymajoros