[
https://jira.codehaus.org/browse/MNG-5723?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=356737#comment-356737
]
Dave Roberge commented on MNG-5723:
-----------------------------------
Hey, I believe I was able to reproduce the behavior. I created a simple maven
project, and declared 2 repositories in the pom as follows:
{code}
<repositories>
<repository>
<id>thirdparty</id>
<name>Third Party</name>
<url>http://localhost:8081/nexus/content/repositories/thirdparty/</url>
</repository>
<repository>
<releases>
<updatePolicy>always</updatePolicy>
</releases>
<id>test</id>
<name>Test Repo</name>
<url>http://localhost:8081/nexus/content/repositories/my-test1/</url>
</repository>
</repositories>
{code}
I created a dummy artifact and deployed it to each of those repos, then added
it as a dependency to the pom.
Using maven 3.1, I did a clean install and was able to see the artifact get
downloaded from both repositories. If you delete the dummy artifact from the
local repository and then build again, you will see the same result.
I observed the behavior in versions 3.1-3.2.3. Building the project with
3.2.4-SNAPSHOT appears to fix the problem.
>From what I found, it was fixed with this commit:
>http://git.eclipse.org/c/aether/aether-core.git/commit/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java?id=c61f6cc18bd804441c5a41a21ee44f9f78f1c9ad
> Why does maven 3.2 download same artifact multiple times from all
> repositories defined in pom ?
> -----------------------------------------------------------------------------------------------
>
> Key: MNG-5723
> URL: https://jira.codehaus.org/browse/MNG-5723
> Project: Maven
> Issue Type: Bug
> Affects Versions: 3.2.1, 3.2.2, 3.2.3
> Reporter: Ruchir Sachdeva
>
> 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 ?
--
This message was sent by Atlassian JIRA
(v6.1.6#6162)