On 3/28/07, Gregoire Henry <[EMAIL PROTECTED]> wrote:
Hello I am facing with some strange behaviour ... I have some dependencies like that : Mod A depends from Mod B/rev2 in conf default->C1 Mod A depends from Mod C/rev1 in conf default->C2 Mod C/rev1 depends from Mod B/rev1 in conf default->C3 In my repository , i have Mod B/rev2/C1 , Mod B/rev1/C3 and Mod C/rev1/C2 but I don't have Mod B/rev2 in conf C3 ... I'm using latest-revision strategy . When i make the resolve , ModB/rev1 is evicted by ModB/rev2 ... ok but ivy try to resolve ModB/rev2 in configuration C3 for satisfying the Mod C/rev1 dependencies .. and fail because this conf doesn't exist ... There is something strange in this behaviour ... ,it'sa "configuration migration" from Mod B/rev1 to ModB/rev2 as if ivy expects that all revisions should always have the same configuration ..... Is this the normal way ?
I don't know if it's the normal way, but it's the way Ivy goes. The problem is that it's not easy to solve this problem, and according to what I've seen so far, most of the time configurations are kept over compatible versions. If versions are really incompatible, the conflict shouldn't be solved by a simple eviction, but something more complex, like using complex classloaders to keep several versions in the same vm. Anyway, the solution to this problem is to use fallback configurations: make modC/rev1 depend on modB/rev1 C3(*) or C3(default) to have it use C3 conf if present, otherwise take all conf or the default conf or whatever you want... HTH, - Xavier Thank's
Greg
