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