You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by "Brett Porter (JIRA)" <ji...@codehaus.org> on 2006/03/05 04:55:13 UTC

[jira] Commented: (MNG-2098) Artifact resolver incorrectly selects repository which doesn't contain the selected version

    [ http://jira.codehaus.org/browse/MNG-2098?page=comments#action_60098 ] 

Brett Porter commented on MNG-2098:
-----------------------------------

I believe the simple fix has more consequence than to just change the number of repos searched, but I'd need to investigate. This requires more careful consideration.

> Artifact resolver incorrectly selects repository which doesn't contain the selected version
> -------------------------------------------------------------------------------------------
>
>          Key: MNG-2098
>          URL: http://jira.codehaus.org/browse/MNG-2098
>      Project: Maven 2
>         Type: Bug

>   Components: Artifacts and Repositories
>     Versions: 2.0.2
>     Reporter: Garrett Conaty
>  Attachments: MNG-2098.simplefix.diff, pom.xml
>
>
> The current logic for resolution of an artifact which has groupId/artifactId and then a range is for the DefaultArtifactCollector to call MavenMetadataSource and retrieve the available versions and then match the available versions to the range.
> However, a side effect exists in that the DefaultRepositoryMetadataManager in its call to mergeMetadata sets the repository for the artifact.  It currently just sets it to the last repository that had versions to merge.  What occurs here though is that it can be set to a repository that doesn't actually have the artifact that is selected as part of the match of version range to available versions.  Then when this artifact is passed to the resolver to download the JAR it references, it of course can't find it and an exception is thrown.
> So there are a couple of issues here
> 1) Should the DefaultArtifactResolver really use artifact.getRepository() exclusively if it's not null?  Perhaps the Artifact really ought to contain a list of repositories that are acceptable (from the transformation phase) from which to try.  This may be a good enhancment.
> but the more pressing issue is
> 2) Shouldn't the DefaultArtifactCollector actually do the repository selection, not have it be a side effect of getting the metadata.
> The simple patch I've attached solves the problem by just removing the call to setRepository in the mergeMetadata method.  This has the effect that there will be no repository chosen by the time the DefaultArtifactResolver gets a hold of the artifact and it will then go through the list of remoteRepositories until it finds a succesful match.
> What I'd like to do though is really modify the DefaultArtifactCollector and MavenMetadataSource so that the collector can make the decision about what repository/list of repositories to use, and in the very least choose the repository that has the version that was matched in the range.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org