有几个类似的问题,但没有像这样。如何处理这种情况(典型场景):有关依赖关系共享的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