在POM的依赖关系管理部分中是否存在有两个不同版本的同一工件的有效用例?
我正在查看根POM包含这样一个示例的项目。项目本身有多个模块,使用不同版本的这个"重复依赖"。因此,一些模块必须在它们的依赖项中明确指定工件的版本,以便区分这两者。
如果模块的POM文件必须指定版本,那么在父的依赖关系管理中复制的原因是什么?即使从依赖关系管理中删除了依赖关系,它也会被正确查找,那么为什么你会首先在那里复制它呢?
我只想弄清楚这是不是一种好的做法,或者是否能更好地解决这种情况。
答案 0 :(得分: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会拿起第一个,所以第二个永远不会被使用。只需删除它以防止更多混淆:)
答案 1 :(得分:0)
尝试欺骗行家。在每个组的末尾键入点。它对我有用。
<dependency>
<groupId>my.group</groupId>
<artifactId>myartifact</artifactId>
<version>1</version>
</dependency>
<dependency>
<groupId>my.group.</groupId>
<artifactId>myartifact</artifactId>
<version>2</version>
</dependency>
<dependency>
<groupId>my.group..</groupId>
<artifactId>myartifact</artifactId>
<version>3</version>
</dependency>
=)