8

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

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

如果模块的 POM 文件无论如何都必须指定版本,那么在父项的依赖管理中出现重复的原因是什么?即使从依赖项管理中删除了依赖项,它也会被正确查找,那么你为什么要在第一时间复制它呢?

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

4

2 回答 2

9

实际上,如果您使用的是 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 会选择第一个,所以永远不会使用第二个。只需将其删除以防止更多混乱:)

于 2013-08-30T17:32:35.327 回答
1

尝试欺骗maven。在每组的末尾键入点。这个对我有用。

<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>

=)

于 2018-11-13T18:25:14.680 回答