有几个类似的问题,但没有这样的。您如何处理这种情况(典型场景):
一个由 8-11 个子项目组成的项目,具有一个父工件/项目和一个主要使用/声明其他项目作为模块的主项目。
问题是所有项目“严格”只共享共同的依赖关系,例如testng, logging, apache commons and stuff
。但总是喜欢其中 3 个使用 50-60% 的相同特定依赖项(apache-chemistry、jackrabbit、abdera 等),另外 2-3 个也使用 50-60% 相同但不同的依赖项。主要的部分使用了很多相同的部门。
我不能将那些“非严格”共享的部门放入父项目中以供其他人继承它们。所以只有共同的 deps 会被继承。并且存在大量重复的依赖关系。我只能通过管理他们的版本<dependencyManagement>
.
另一种选择是让父 pom 包含大部分依赖项,但子项目甚至会继承它们不需要的依赖项。
我可以有超过 1 个父项目,但感觉不对。另外,从父项目的继承可能是一场噩梦,因为如果您没有正确记录/注释父 pom 定义,您不知道项目需要哪些依赖项。
另一种方法是创建仅用作依赖项容器的 pom 工件 - 它们声明特定的依赖项组,以便模块只需声明这些依赖项即可获得传递依赖项。但是,嘿,您想部署并提交某种
OneDepArtifact 声明jackrabit, abdera, chemistry
AnotherDepArtifact 声明htmlcleaner, google-api, tika
ThirdDepArtifact 声明spring, httpclient, selenium
这是一个巨大的混乱,我不确定我是否使用<dependencyManagement>
正确的是,它似乎只对管理依赖版本有用。
我正在考虑使我的应用程序开发适应“maven 多模块设计”。但是如果你想创建 spring 服务/bean,只在一个模块中使用各种库,你就不会在不同的模块中实现它们,只是因为它们使用其他模块也使用的库:-)