2011-09-19 104 views
4

在我們的一個項目中,我們將構建系統從Ant切換到Maven。 該項目有很多相應的模塊,所以我們決定製作一個多模塊Maven項目。我們使用NetBeans編寫代碼並構建/運行/調試軟件。Maven多模塊構建和運行

如果我右鍵單擊超級POM的項目,我可以使用clean和build實際重建所有子模塊,以便它們在超級POM中定義。當從屬模塊被編譯並安裝到本地存儲庫之前,我也可以從子項目的菜單中運行包含主代碼的代碼。

我想知道是否有可能從超級POM的菜單中運行該項目?這將涉及運行特定的子模塊,但也很自動地構建所有過時的子模塊。 (如果由可運行工件的項目觸發,而不是由父項目觸發,我想這會更好)以前的Ant系統在運行時執行了此操作。現在我們必須用Maven手動執行此操作。

我知道重建涉及將重建的工件一次又一次地安裝到本地存儲庫中,但由於我們正在開發SNAPSHOT版本,因此我認爲這不是問題。

回答

1

通常,您應該執行最終裝配的子項目中的Run Project ..(jar/war/..) 以在運行之前啓用依賴項目,可以手動執行具有受影響項目依賴項的Build或者相應地在項目屬性面板中配置運行項目操作,請參閱屏幕截圖http://screencast.com/t/fRAgLdj6

+0

我以前試過「用依賴關係構建」,但它沒有爲我做任何事情。問題是,我們的配置工件不是代碼probject的Maven依賴項,而是在構建期間被提取到目標目錄。現在我把它作爲一個實際的依賴關係,但告訴Maven不要將jar複製到目標目錄,但現在「Build with dependencies」起作用。 – NagyI

0

因此,首先以我的答案爲背景。我們使用預集成測試,集成測試和後集成測試階段來啓動我們的應用程序,運行集成測試並分別關閉它們。這是maven的常見模式,但需要做一些工作才能讓正確的插件在正確的階段工作(並且具體如何做到這一點因應用程序而異)。

考慮到背景,運行mvn pre-integration-test來構建所有內容,啓動應用程序,然後使其保持運行(或者,也可以手動調整將生成區段添加<defaultGoal>pre-integration-test</defaultGoal>)是相當簡單的。這很適合Maven模式。

+0

嗯,這不是我正在尋找,但看起來有趣,所以我會嘗試閱讀更多關於它。 – NagyI