Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-5723

Maven downloads same artifact from all repositories defined in POM

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.2.1, 3.2.2, 3.2.3
    • 3.2.5
    • None
    • None

    Description

      I have defined 2 repositories in pom.xml like below. One is public and other is thirdparty.

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

      Say there is a dependency called grpId:artId:1.1.0 which I have defined in my pom. This dependency is present in both the repositories defined above- public and thirdparty

      When I run mvn install I see different behaviours in the way maven downloads the grpId:artId:1.1.0 artifact based on the version of maven i am using.

      Behaviours :-

      *1. Using Maven 3.1 and previous versions*

      • *a.* Maven looks up the dependency grpId:artId:1.1.0 in 'public' repo
      • *b.* Maven finds the dependency and downloads it.
      • *c.* Maven does not look up the dependency grpId:artId:1.1.0 in
        'thirdparty' repo as it is already downloaded from previous repository.

      *2. Using Maven 3.2*

      • *a.* Maven looks up the dependency grpId:artId:1.1.0 in 'public' repo
      • *b.* Maven finds the dependency in 'public' repo and downloads it.
      • *c.* Maven again looks up the dependency grpId:artId:1.1.0 in
        'thirdparty' repo even though it is already downloaded from 'public' repository.
      • *d.* Maven finds the dependency in 'thirdparty' repo and downloads it
        and overwrites the dependency downloaded from 'public' repo previously

      I wonder why maven is behaving in an absurd manner for maven-3.2. It should stop looking further for the dependency which is already resolved and downloaded from one repository .

      Is there a way to achieve it using maven 3.2 ?

      Attachments

        Activity

          People

            michael-o Michael Osipov
            ruchirsachdeva Ruchir Sachdeva
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: