如何处理共享代码依赖性的两个Maven子模块

时间:2013-06-11 19:57:40

标签: maven log4j

我认为这是一个相当常见的设置。我有一个包含两个模块的项目,每个模块都有自己的pom.xml。在上面,我有一个项目的pom.xml,它取决于它的子模块。这两个子模块具有共享依赖关系,即log4j。我该如何处理这种依赖?我应该只是让每个子模块都将log4j作为依赖项,还是应该让更高级别的项目模块参与进来,声称它是项目依赖项?如果我有两个列出依赖关系的子模块,那么Maven是否聪明并且只下拉log4j一次,或者每个子模块是否会下载自己的log4j私有副本?如果项目模块具有依赖关系,那么log4j包是否可以在适当的时间用于子模块?你会做什么,或者你在这种情况下做了什么?

2 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法是使用dependencyManagement标记。

  

依赖关系管理部分是用于集中依赖性信息的机制。如果有一组继承了公共父项的项目,则可以将所有关于依赖项的信息放在公共POM中,并且可以更简单地引用子POM中的工件。

要总结效果,请将标记放在父pom中并让子项引用它。但它们并未引用版本号。这样做的好处是,您可以随时更新父pom中的log4j版本,并且所有子poms都可以获得新版本而无需修改它们的poms。

答案 1 :(得分:0)

您可以在更高级别的项目中设置依赖关系。这将涵盖项目的两个模块的依赖关系。

资料来源:这是我的团队在其中一个项目中所做的工作。