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