2013-08-30 37 views
6

在POM的依赖管理部分中是否存在两个不同版本的相同工件的有效用例?Maven - 依赖管理中的多个工件版本

我正在看一个项目的根POM包含这样一个例子。该项目本身有多个模块,使用不同版本的“重复依赖”。因此,一些模块必须在它们的依赖关系中明确指定工件的版本以便区分这两者。

如果模块的POM文件无论如何都必须指定版本,那么在父级依赖管理中进行重复的原因是什么?即使从依赖管理中删除了依赖关系,也会正确查找依赖关系,那么为什么要首先将它复制到那里呢?

我只是想弄清楚这是否是一种好的做法,或者是否有更好的解决方案来解决这种情况。

回答

7

其实,如果你使用的是Maven3 +,你会得到这样的警告:

[WARNING] 
[WARNING] Some problems were encountered while building the effective model for groupId:artifactId:jar:1.0-SNAPSHOT 
[WARNING] 'dependencyManagement.dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: junit:junit:jar -> version 3.8.1 vs 3.0 @ line 15, column 18 
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. 
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects. 
[WARNING] 

Maven会拿起第一,所以第二个将永远不会被使用。只是删除它,以防止更多的困惑:)