首页 文章

为什么maven 3.2从pom中定义的所有存储库多次下载相同的工件

提问于
浏览
1

我在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 回答

相关问题