我有一个 Maven 项目多模块项目。一些模块为其他模块生成的库创建自定义打包。正在使用的包装有自己的一套版本化依赖项,我需要很好地使用它们。
例如:我的父 POM 可能有一个条目,例如commons-codec:commons-codec 1.4
,我的“core-lib”POM 将其作为依赖项包含(无显式版本),并且我想确保我的打包模块捆绑在正确的版本中。但是,我使用的特定类型的自定义打包也需要例如log4j:log4j 1.2.15
,并且我想确保当我的打包模块运行时,它还捆绑了正确的 log4j 版本。
这是皱纹:我正在为“制作{自定义包装}的项目”工作的示例POM使用自定义包装团队提供的父级。如果我使用他们的父母,我会丢失commons-codec
. 如果我使用我的父母,我会丢失log4j
.
现在,通常如果我问“我如何使 A 和 B 依赖于相同的版本”,您会回答“使 A 和 B 具有相同的父级,并dependencyManagement
在父级中包含一个部分”。我的问题是,我需要 A、B 和 C 依赖同一个版本,但我对 C 没有任何控制权。
我认为这就是 Maven“mixins”要解决的问题,但当然它们还不存在。与此同时,我一直在做的是选择一个父母,然后dependencyManagement
从另一个 POM 复制并粘贴该部分,并附上一条评论说“确保你保持最新”。显然,这是一个丑陋,丑陋的黑客,但我还没有找到另一种与双方保持同步的方法。