我在pom.xml中定义了2个存储库,如下所示 . 一个是公共的,另一个是第三方 .
<repositories>
<repository>
<id>public</id>
<name>Nexus - Public Repositories</name>
<layout>default</layout>
<url>http://mavenrepo.aaa.net/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>thirdparty</id>
<name>Nexus - Third Party</name>
<layout>default</layout>
<url>http://mavenrepo.aaa.net/nexus/content/repositories/thirdparty</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
假设我的pom中有一个名为grpId:artId:1.1.0的依赖项 . 这种依赖性存在于上面定义的存储库中 - 公共和第三方
当我运行mvn install时,我看到maven根据我使用的maven版本下载grpId:artId:1.1.0工件的方式有不同的行为 .
行为: -
1. Using Maven 3.1 and previous versions
-
a. Maven在'public' repo中查找依赖关系grpId:artId:1.1.0
-
b. Maven找到依赖项并下载它 .
-
c. Maven没有查找依赖关系grpId:artId:1.1.0 in
'thirdparty' repo,因为它已从先前的存储库下载 .
2. Using Maven 3.2
-
a. Maven在'public' repo中查找依赖关系grpId:artId:1.1.0
-
b. Maven在'public' repo中找到依赖项并下载它 .
-
c. Maven再次在'thirdparty' repo中查找依赖关系grpId:artId:1.1.0,即使它已经从'public' repository下载了 .
-
d. Maven在'thirdparty' repo中找到依赖项并下载它并覆盖之前从'public' repo下载的依赖项
我想知道为什么maven为maven-3.2以荒谬的方式表现 . 它应该停止进一步查看已经解决并从一个存储库下载的依赖项 .
有没有办法用maven 3.2实现它?
1 回答
这是由版本3.2.5中的maven识别和修复的错误
https://issues.apache.org/jira/browse/MNG-5723