[ 
https://jira.codehaus.org/browse/MNG-5491?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=339897#comment-339897
 ] 

Jason van Zyl commented on MNG-5491:
------------------------------------

Please read 
https://cwiki.apache.org/confluence/display/MAVEN/Submitting+Issue+for+Maven's+Core
                
> Resolve artifact failed because of using repo url instead of repo ID 
> ---------------------------------------------------------------------
>
>                 Key: MNG-5491
>                 URL: https://jira.codehaus.org/browse/MNG-5491
>             Project: Maven 2 & 3
>          Issue Type: Bug
>          Components: Artifacts and Repositories
>    Affects Versions: 3.0.5
>         Environment: On several systems as Linux Redhat and Windows Vista
>            Reporter: David Fradin
>         Attachments: settings.xml
>
>
> We have develop a MOJO that downloads a list of artefacts and makes that 
> operations on them. It works in Maven 3.0.3 but failed in Maven 3.0.5 on 
> resolveArtifact method. It seems to be a regression on Maven 3.0.5 (we don't 
> test on Maven 3.0.4).
> In attached file, find our settings.xml (we have remove internal information).
> You can see we have a plugin repository ID and a repository ID that use the 
> same URL repository.
> When we use our plugin, Maven downloads its dependencies and for example 
> download javax.xml.stream:stax-api:jar:1.0-2 (it makes the same problem on 
> all common artifacts).
> On local repository, we can see in
> cat repository/javax/xml/stream/stax-api/1.0-2/_maven.repositories :
> #NOTE: This is an internal implementation file, its format can be changed 
> without prior notice.
> #Wed Jul 03 13:30:47 CEST 2013
> stax-api-1.0-2.jar>plugin-repository=
> stax-api-1.0-2.pom>plugin-repository=
> Then Maven execute our plugin that has to download a list of artifacts.
> But it failed to download javax.xml.stream:stax-api:jar:1.0-2 
> Reason is that javax.xml.stream:stax-api:jar:1.0-2 is present on local 
> repository, so it found by Maven but when it tests if it is up-to-date it 
> failed because this file comes from another repository.
> Explanation :
> Class : DefaultArtifactResolver
> Method : private List<ArtifactResult> resolve( RepositorySystemSession 
> session,
>                                           Collection<? extends 
> ArtifactRequest> requests )
> Call
> Class : DefaultUpdateCheckManager
> Method :    public void checkArtifact( RepositorySystemSession session, 
> UpdateCheck<Artifact, ArtifactTransferException> check )
>     {
> [...]
>       if ( isAlreadyUpdated( session.getData(), updateKey ) )
>               
> updateKey contains repository.getUrl() and not repository.getID()
> So isAlreadyUpdated answers yes because artefact as already been downloaded 
> from this URL.
> But when Maven reads _maven.repositories, it sees that repository ID 
> public-repository is not here so the plugin is considered as unavailable.
> So we have an artifact that is present in local repository but considered as 
> unavailable by resolve and present by isAlreadyUpdated. 
> So artifact is never updated so the repository ID is not added to 
> _maven.repositories
> Is it clear ?
> I hope...

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to