有幾個類似的問題,但沒有像這樣。如何處理這種情況(典型場景):有關依賴關係共享的Maven多模塊項目組合
8-11個子項目的項目,有一個父項目/項目和一個主要項目,主要使用/將這些項目聲明爲模塊。
問題是,所有項目「嚴格」只共享共同的依賴項,如testng, logging, apache commons and stuff
。但總是像其中3人使用50-60%的相同特定折扣(apache-chemistry,jackrabbit,abdera等),另外2-3人也使用50-60%的相同但不同的依賴關係。主要的使用了許多相同的代價。
我不能將這些「非嚴格」共享deps放入父項目中以供其他人繼承它們。所以只有共同的代價才被繼承。並且有大量重複的依賴關係。我只能通過<dependencyManagement>
管理他們的版本。
另一種選擇是父pom包含大部分依賴關係,但子項目甚至會繼承那些他們不需要的項目。
我可以有超過1個父項目,但它感覺不對。父項目的繼承也可能是噩夢,因爲如果你沒有正確地記錄/評論父項目定義,你不知道項目需要什麼依賴項。
另一種方法是創建僅用作依賴容器的pom構件 - 它們聲明特定的依賴關係組,以便模塊聲明這些構件以獲得傳遞性依賴關係。但是,嘿,你想部署,並承諾某種
OneDepArtifact聲明jackrabit, abdera, chemistry
AnotherDepArtifact聲明htmlcleaner, google-api, tika
ThirdDepArtifact聲明spring, httpclient, selenium
這是一個巨大的混亂,我不知道如果我正確使用<dependencyManagement>
,它似乎只對管理依賴項版本有用。
我在考慮將我的應用程序開發調整爲「maven multimodule design」。但是如果你想創建彈簧服務/ bean,只使用不同的庫,在一個模塊中,你不會在不同的模塊中實現它們,只是因爲它們使用庫,其他模塊也使用:-)
我有完全相同的問題。我喜歡管理多模塊項目,因爲它帶來了其他優勢,但如果項目變大,這種跨模塊依賴關係共享是一場噩夢。 – lisak 2011-06-14 18:15:04
也許人們必須調整實際的應用程序開發到多模塊項目設計,並嘗試創建這樣的組件,以便不會有任何依賴重用......但這似乎並不正確 – lisak 2011-06-14 18:31:54