多个项目的 Maven 依赖项与依赖项管理

Posted

技术标签:

【中文标题】多个项目的 Maven 依赖项与依赖项管理【英文标题】:Maven dependencies vs dependency management for multiple projects 【发布时间】:2013-06-22 10:35:40 【问题描述】:

很抱歉再次问这个问题。如果我做对了,请告诉我?

我们有一个父 pom 和多个模块。现在如果所有子项目都想继承相同的jar文件(例如spring),我可以将它们放在父项目pom中,而无需将它们包含在子pom中。

如果我在父 pom 下放入依赖项,它们不会包含在所有子项目中,但我可以通过添加它们来包含我需要的那些(例如测试),而无需指定版本。

这是对的还是我完全不对?希望我的问题很清楚。

我只需要一个包含所有依赖项的巨型父 pom。孩子们应该会自动获得一些常见的依赖项以及每个孩子需要的特定依赖项。

谢谢

哈里什

【问题讨论】:

differences between dependencymanagement and dependencies in maven 的可能重复项 【参考方案1】:

在dependencyManagement 中,您声明依赖版本、排除项和其他可以让您为多个项目就地管理它们的内容(例如父pom)。

然后在依赖项中声明依赖项的实际使用/需要,如果依赖项是在父 pom 中管理的,则无需使用版本即可这样做,它将被继承,因此在您的下游使用中保持一致父母 pom。

同样的逻辑适用于 pluginManagement 和插件,包括插件配置。

【讨论】:

非常感谢您的回复。因此,我将在具有版本和排除项的父 pom 中创建 。然后我需要在需要由所有子级继承的父 pom 中添加 ,然后在子级中为他们单独需要的子级创建 下创建的依赖项不会被任何项目继承。对吗? 仍然不是很清楚:在 下的父 pom 中,我列出了所有包含排除项、版本等的依赖项。然后在父级的 下列出了一些依赖项用于所有项目(如日志记录)。所以 下的其他依赖不会包含在子项中,对吧? 不要在父级中添加依赖。只需将它们添加到它们是实际依赖项的位置。 depMgt 将始终被继承。如果你真的需要管理一堆部门,你可以使用导入范围,但这比必要的要复杂。

以上是关于多个项目的 Maven 依赖项与依赖项管理的主要内容,如果未能解决你的问题,请参考以下文章

01Maven依赖插件之maven-dependency-plugin

如何剔除Maven项目中多余的依赖项?

如何使用 Maven 管理项目依赖项?

插件依赖的Maven依赖管理

Intellij IDEA Maven 插件 - 管理依赖项

Maven - 如何使用多个版本的依赖项?