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