To my best knowledge, there is something called conflict-manager that you can configure in ivysettings to handle conflicts the way you will want them to be handled
http://ant.apache.org/ivy/history/latest-milestone/settings/conflict-managers.html And you can always run ant task repreport to find out down-stream dependencies, http://ant.apache.org/ivy/history/latest-milestone/use/repreport.html I am not sure about up-stream dependency ( that just means going and searching for ivy.xml randomly and looking if it refers to a dependency or not). Regards, Garima. And for your other queries On Tue, Dec 15, 2009 at 4:34 PM, Carl Myers <[email protected]> wrote: > Hey all, > > It seems like a common problem (the way we are using ivy) to run into > conflicts. Unfortunately, if your dependency tree looks like this: > > A: B C D E > C: F G > G: H-1.0 > E: Z > Z: H-1.1 > > Here I have a conflict and get the message "H-1.0 (required by G) conflicts > with H-1.1 (required by Z)". > > Unfortunately, I am building A, and I have no clue where H comes from. If I > look at my ivy.xml (the only ivy.xml that I have checked out and handy) all > I see are A, B, C, D, and E. I have potentially never heard of Z or G, nor > do I care. Some dependency changed and boned me, and I need more > information than that to figure out how to fix it. > > Specifically, I need the all packages on the path to the "lowest common > ancestor" of the two conflicting packages in my dependency tree. In this > example, I would like to see: > > H-1.1 (A->E->Z->H-1.1) conflicts with H-1.0 (A->C->G->H-1.0) > > This should include the version numbers too, I am just leaving them out for > clarity and brevity here. The two lists of dependencies above are the two > paths from the lowest common ancestor to each respective conflicting > package. It also happens to be a conprehensive list of *every* package I > might potentially edit to fix this problem, giving me the data I need to > analyze the problem. In this example, the lowest common ancestor was A, the > package I was working on, but you can easily come up with examples where > even the LCA will be some package you have never heard of - but armed with > that path, you can start your investigation and figure out what changed, and > what needs to change to fix it. > > Additionally, presently, Ivy bails out as soon as it finds a single > dependency conflict, when there may be more than one. This means you make > some decision (like "I am reverting Z to H-1.0") and fix that problem, only > to realize some other package (Maybe, in this example, F) also depends on > H-1.1. How frustrating! > > My questions are as follows: > 1. Is there some "tell me more" setting which will make Ivy print out more > info like I am asking for, or list all conflicts it can find instead of > dying on the first one? > > 2. If I want to write a tool to analyze dependencies, for example: > getDownstreamDependencies(pkgName, pkgVersion) > getUpstreamDependencies(pkgName, pkgVersion) > getDirectDownstreamDependencies(pkgName, pkgVersion) > > Is there some library which can parse ivy.xml files which can easily be > used outside the ivy code base? I haven't looked the code yet but I thought > I'd run it by you guys before I tried anything drastic > > 3. RFC? (Requests for comments) - should I consider submitting a patch for > Ivy to do what I described above? > > Thanks! > -- > Carl Myers > Palantir Technologies | Internal Tools Software Engineer > [email protected] >
