[ 
https://issues.apache.org/jira/browse/IVY-966?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12645606#action_12645606
 ] 

Maarten Coene commented on IVY-966:
-----------------------------------

What happens if you use "latest-time" as default latest-strategy?
You can specify this in your settings.xml:

{noformat}
<ivysettings>
    <settings defaultResolver="default" defaultLatestStrategy="latest-time" />
    ....
</ivysettings>
{noformat}

> Problem resolving latest jar from multiple repositories containing same jar 
> with different versions
> ---------------------------------------------------------------------------------------------------
>
>                 Key: IVY-966
>                 URL: https://issues.apache.org/jira/browse/IVY-966
>             Project: Ivy
>          Issue Type: Bug
>    Affects Versions: 2.0-RC2
>         Environment: Windows XP SP2, JDK 1.6.0.05
>            Reporter: Juliano DeCarvalho
>         Attachments: build.xml, ivy.xml, ivysettings.xml
>
>
> This problem may be related to my configuration, but if it is, I'm not sure 
> how to fix it.
> My project has a dependency on a jar that I build with another project.  This 
> jar can be found in two different maven repositories, one local and one 
> shared.  The jars have different modification dates but the same revision 
> (SNAPSHOT) in either repository.  I need Ivy to find the latest of the two 
> jars.  Both repositories are located on my local filesystem, for testing 
> purposes.
> Ivy does not seem to return the latest of the two jars.  It seems to randomly 
> select one, from what I can see.  I have debugged into the code and I think I 
> found the problem, but not the cause or a solution.
> I have attached my configuration.  please note that there may be a typo or 
> two since I had to change some things for the sake of anonymity.
> Here are the sequence of events which occur to cause this problem:
> * Code enters AbstractResolver.checkLatest(ResolvedModuleRevision, 
> ResolveData), passing in the local artifact
> * Code returns artifact as latest since its the first one found
> * Code enters the checkLatest method again with the second (and newer by 
> modification date) artifact
> * Code calls isAfter(newModuleFound, previousModuleFound, data.getDate())
> ** newModuleFound is the second artifact, newer by date
> ** previousModuleFound is the first artifact, which is older
> ** data.getDate() is null
> * isAfter() creates an array [ newModuleFound, previousModuleFound ] and 
> passes that to LatestRevisionStrategy.findLatest()
> * findLatest() iterates over the array backwards
> ** findLatest() states that it iterates backwards because, and I quote:   
> "the latest revision comes last, use a ListIterator to iterate the sorted 
> list in the reverse direction.".  Now, this is incorrect in my case since the 
> array passed in clearly has the newer module found (the jar with the newer 
> modification date) in slot 0
> * findLatest() returns the older revision artifact because the assumptions it 
> makes about the array are wrong
> I hope that makes sense.  If there's anything else that you need to replicate 
> this problem, please let me know.
> Thank you,
> - Juliano DeCarvalho

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to