2012-02-10 73 views
5

考慮下面的企業應用分層例如:關於創建Maven項目結構的建議 - 多個模塊與多個項目?

  1. 項目的服務 - > POJO服務層
  2. 項目的Web - > Web應用程序,取決於 '項目的服務',部署爲一個WAR
  3. 項目服務 - > Web服務,取決於'項目服務',作爲單獨的WAR部署,目前未通過互聯網公開
  4. 項目獨立 - >克倫喬布斯,取決於'項目服務'

什麼是在Maven中組織這種方法的正確方法。我應該創建一個多模塊maven項目嗎?如果'project-services'是一個Maven模塊,是否可以與其他三個項目共享,每個項目都是獨立的可部署單元?

在我以前的項目中,我只創建了4個不同的Maven項目,從來沒有什麼其他需要。

想驗證是否有比我以前做過的更好的方法。

回答

2

你實際上可以做任何一種方法。如果它真的是一個大項目,你總是希望同時構建和發佈,那麼多模塊項目就非常適合。您可以設定它像這可能:

pom project (top level project that would define all of the modules) 
    jar project (project-services) 
    war project (project-web) 
    war project (project-web-services) 
    project-standalone (wasn't sure if this was a jar, or just some scripts, etc) 

所以你只建立和釋放關閉根項目,它會照顧所有子模塊的爲您服務。它們可以互相依賴(只需要注意循環依賴)。你幾乎要開始了。

其他選項完全是單獨的工件。這個好處有一個不同的發佈週期。當你有一個不經常改變的jar庫時,這是一個很好的選擇,但是你經常更新戰爭。

很明顯,你可能有混合,所以也許jar是獨立的,但你有一個包含兩個war文件的多模塊項目。 maven的好處在於,它足夠靈活,可以處理任何業務案例,這些案例應該如何劃分。

0

我肯定會使用單個項目與模塊,以確保使用的通用第三方庫的版本相匹配。

以POM項目爲根,讓所有實現和其他工件共享它通常被認爲是除單模塊項目之外的所有其他應用的良好實踐。

1

在我的工作場所,我們有許多共享圖書館的頂級項目(15個頂級項目共享35個左右的圖書館)。我們使用每個庫的單個項目方法。今天,當我們必須一次性釋放所有這些,這是一場噩夢。

的一些問題,我們面對的:

  • 手動找出依賴
  • 不得不按照正確的順序運行釋放
  • 一次失敗停止整個發佈

如果我不得不d它一遍又一遍(我幫助設置了所有這一切),我會使用一個多模塊項目。如果沒有別的,一氣呵成發佈一切都是一個巨大的優勢。在eclipse中這些項目可能看起來不太漂亮,但那不是你應該瞄準的東西。

+0

一個巨大的項目的缺點是,你經常會發布沒有任何變化的工件。我理解發行版的問題,也許在你的情況下,你實際上每次發佈時都會改變每件神器......在這種情況下,它沒有什麼麻煩。但有時當你只需要釋放一件神器時,將它們全部釋放而沒有任何變化是不太理想的。 – Michael 2012-02-12 02:10:05

0

既然你有一些模塊之間的直接依賴關係,我也建議在多模塊項目。

我經常推薦的是考慮模塊的生命週期。例如:如果您將釋放批處理模塊的次數比服務層次要多,那麼將它分開是有意義的。所以你不需要發佈(部署)沒有變化的東西。 由於批處理通常不以.war文件相同的方式部署。但這取決於服務+批處理模塊的生命週期。

在大多數情況下,這種移動是並排的。所以+1「爲所有人」