2015-11-23 23 views
4

我想了解什麼是組織Maven項目的最佳方式。 比方說,我有這些項目 -根據項目類型創建許多Maven父級poms是否有意義?

  • 項目A - Web應用程序,使用Spring MVC
  • 項目B - UTIL LIBRARY1, 使用記錄,snakeyml
  • 項目C - UTIL library2,使用記錄, snakeyml
  • ProjectD - DAO庫,使用日誌記錄,使用Spring註釋

A依賴於D,D依賴於C. B不依賴於任何東西。

我用snakeyml,slf4j和log4j作爲依賴關係創建了一個parent-pom項目。我宣佈這個項目爲B,C和D poms的父項目。父pom還定義了編譯器的特定屬性。

我的理解是,當你將某些東西聲明爲父類時,Maven在poms中的繼承允許子項目繼承所有的依賴關係。如果這是正確的,我應該有多個家長嗎?比方說,就像parent-pom一樣,是否應該有一個parent-spring-pom,所有春季項目都會繼承?這是一個很好的做法,有很多不同的父母,只是爲了更好地組織依賴關係,但沒有合乎邏輯的項目層次結構?另外,我並沒有將父項目中的子項目聲明爲模塊,因爲其中有些是獨立的庫。我是否偏離Maven公約?

+0

共享依賴聲明是一把雙刃劍。也許你今天的依賴關係是一樣的,但是當他們分歧時你明天會做什麼?我不是Maven專家,但我會說保持你的項目層次結構簡單,不要擔心重複的依賴聲明。 – dnault

回答

3

您不應該使用所使用的技術對其項目進行分組,而是通過其功能進行分組。

假設您現在考慮創建一個父項目parent-spring-pom,該項目將具有子項目Spring項目。如果明天你決定從Spring切換到JSF呢?還是一個本土框架?更糟的是,你想切換其中一個項目,而不是全部?你將不得不改變每個模塊的名稱,並且這是一個痛苦。給予的東西的名稱不應該是如何但約什麼

這在Maven和多模塊項目的情況下也是如此。

請注意,在您的用例中,我沒有看到有多個父母的增值。我覺得它比任何事情都更復雜。但是,例如,您可以通過網絡應用程序,核心實用程序,數據訪問對項目進行分組......

僅舉一個例子,考慮您擁有訪問多個端點(例如Web服務和數據庫)的數據訪問層, 。將它們分組在一個名爲project-dao的公用父項中,並且它們具有模塊project-dao-wsclient(將包含訪問Web服務的特定代碼)和project-dao-db(將包含訪問數據庫的特定代碼)。